我有一个调用c ++库的python程序,希望释放所有的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 :)
答案 0 :(得分:2)
答案:没有,它永远不会是NULL
(如果是,这是一个致命的错误)。原来这是因为我正在连接两个不同版本的python,一个是通过boost_python,另一个是直接链接。
热门提示:
当有趣的事情发生时,使用ldd
或otool -L
检查您的库依赖项;)