我试图通过启动一个 boost 线程来创建一个多线程程序,该线程调用一个函数,该函数又调用一些 python 模块,但程序卡在那里,因为它获取了一些 PyGILState_Ensure() 锁并等待它无限期释放。你能告诉我这里出了什么问题吗?
是的,实际上一个 python 模块调用了我的 c++ 代码,该代码在单独的线程中调用另一个 python 模块,这就是为什么我认为它等待 PyGIL 释放而导致死锁,所以,有没有使用补丁来删除的解决方案PyGIL?
最佳答案
Python 解释器不可重入,需要在调用时锁定解释器(例如 http://dabeaz.blogspot.be/2011/08/inside-look-at-gil-removal-patch-of.html )。在您的特定情况下,解释器上似乎有另一个 Python 调用已经在运行,并且它持有 GIL。
关于python - 带有嵌入式 python 模块的 C++ 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391410/