У меня есть программа на python, которая вызывает библиотеку c ++, которая хочет снять все блокировки python, чтобы могли работать другие потоки 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 :)