0

几周前,我问了另一个关于通过 boost 将列表的引用从 python 传递到 c++ 的问题。这个问题已经得到了很好的和详细的回答。答案还提到了使用 GIL 来锁定某些线程。我现在的问题是,我真的不明白如何正确使用它,因为在我的代码中,它会使应用程序崩溃。

首先我想解释一下它是什么,我想做:

我在 python 中有一个列表被传递给 c++,来填充它,并从它的内容中渲染。其背后的想法是,通过更改 python 列表直接从 python 更改呈现的内容。因此,我需要锁定列表,以便在 c++ 代码中填充和执行它时不能从 python 中触及它。我也喜欢拥有它,当我更改列表中的某些内容时,但 GIL(我认为)是活动的,因为它在 C++ 中对列表进行了某些操作,它会在锁定释放后立即更改。

我试图锁定的是:

PyGILState_STATE lock;
lock = PyGILState_Ensure();

并结束它:

PyGILState_Release(lock);

我很确定我对 GIL 的理解是错误的。但我不知道出了什么问题。感谢您的任何建议

问候克里斯

4

0 回答 0