1

我有一个 ActiveX (COM) DLL,它可以进行 Windows 系统调用(例如 ReadFile() 和 WriteFile())。它在主要的 Python GUI 线程中运行良好。但是当从线程调用时,我的 Python GUI 崩溃了。我在网上做一些研究,我想我需要对 GIL 做点什么。我在正确的轨道上吗?或者请指出我正确的方向。谢谢!

4

2 回答 2

0

正如 Vladimir 提到的,我可能是您的 COM 组件不是多线程安全的,您可能会测试您的 DLL 注册的“Apartment”类型。这篇文章很好地概述了这个问题。

于 2012-05-30T09:02:09.900 回答
0

不看代码很难说什么,但很可能是:

  1. 您的 ActiveX 根本不支持多线程(其中许多不支持)并且您尝试使用来自不同线程的对象。
  2. 包含 ActiveX 的 DLL 执行一些每个线程的初始化,但是当您从另一个线程调用它时,它不会被初始化。

无论如何,我对 GIL 无话可说,但在我过去处理过 ActiveX 之后,我相信问题的根源很可能是 ActiveX。

于 2012-05-29T18:38:35.290 回答