他の Python スレッドが実行できるように、すべての Python ロックを解放したい C++ ライブラリを呼び出す Python プログラムがあります。
を使用するPyEval_SaveThread
とPyEval_ReleaseThread
、スレッドの状態が NULL であるというエラーが表示されます。
Fatal Python error: PyEval_SaveThread: NULL tstate
ただし、下位レベルの関数は NULL 状態を喜んで受け入れるようです。
PyThreadState *s;
s = PyThreadState_Swap(NULL);
// (now s = 0)
PyEval_ReleaseLock();
// ....
PyEval_AcquireLock();
PyThreadState_Swap(s);
// everything seems to be just fine :)