2

ブーストスレッドを起動してマルチスレッドプログラムを作成しようとしています。このスレッドは、Pythonモジュールを呼び出す関数を呼び出しますが、PyGILState_Ensure()ロックを取得し、無期限に解放されるのを待つため、プログラムはそこでハングします。ここで何が悪いのか教えてください。

ええ、実際には、Pythonモジュールが別のスレッドで別のPythonモジュールを呼び出すC ++コードを呼び出します。そのため、PyGILがリリースされるのを待っているとデッドロックが発生すると思います。したがって、PyGILを削除するためのパッチを使用することで解決策はありますか?

4

1 に答える 1

3

Python インタープリターは再入可能ではなく、呼び出し中はインタープリターをロックする必要があります (例: http://dabeaz.blogspot.be/2011/08/inside-look-at-gil-removal-patch-of. html )。あなたの特定の状況では、インタープリターで既に実行されている別の Python 呼び出しがあり、GIL を保持しているようです。

于 2012-09-12T15:23:10.873 に答える