現在のスレッドがグローバル インタープリター ロックを持っているかどうかを教えてくれる関数を見つけようとしました。
Python/C-API ドキュメントには、そのような関数は含まれていないようです。
私の現在の解決策は、現在のスレッドによって取得されなかったロックを解放しようとしないためPyGILState_Ensure()
に、解放する前に使用してロックを取得することです。PyEval_SaveThread
(ところで、「致命的なエラーを発行する」とはどういう意味ですか?)
この質問の背景: Python を組み込んだマルチスレッド アプリケーションがあります。ロックを解放せずにスレッドを閉じると (クラッシュが原因で発生する可能性があります)、他のスレッドはそれ以上実行できなくなります。したがって、スレッドをクリーンアップ/クローズするときに、このスレッドによってロックが保持されているかどうかを確認し、この場合は解放したいと思います。
回答ありがとうございます。