【发布时间】:2011-12-12 20:23:15
【问题描述】:
我正在尝试测试多线程 C++ DLL。这个 DLL 应该是线程安全的。我用 boost.python 包装了它,我想创建多个 python 线程来通过 boost.python 包装器来运行 DLL。我实际上是在尝试导致线程问题。
我似乎找不到好的文档是 python 解释器是否支持它的两个线程(比如在不同的内核上)同时调用一个导入的模块,以及 GIL 是否需要照管,因为我不希望在 DLL 应提供的安全性之上增加任何安全性。
任何人都可以描述或参考我从多个线程调用 DLL 模块的描述以及在这种情况下应该如何使用 GIL 吗?
【问题讨论】:
-
显然你必须自己释放 GIL,否则你一次只能运行一个线程。见stackoverflow.com/questions/1576737/…
-
一个附带问题:如果我不释放 GIL,并且从 Python 调用的 C++ 代码创建了一个线程,那么这个线程是否可以安全地调用 Python 代码。我想这不会解释我遇到的崩溃......
标签: python multithreading boost-python