1

我有一个调用 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 :)
4

1 回答 1

3

回答:,它永远不会是NULL(如果是,这是一个致命错误)。原来这是因为我正在链接两个不同版本的 python,一个通过 boost_python,另一个直接。

重要提示:当有趣的事情发生时,使用ldd或检查你的库依赖项;)otool -L

于 2011-02-14T20:16:22.193 回答