调节对python列表的多线程访问(boost)

时间:2013-09-03 13:16:51

标签: c++ python multithreading boost locking

几个星期前,我问了另一个问题,即将一个列表的引用从python传递给带有boost的c ++。这个问题得到了很好的详细解答。答案还提到了使用GIL来锁定某些线程。我的问题现在是,我真的不明白如何正确使用它,因为在我的代码中,它崩溃了应用程序。

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

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

我试图锁定的是:

PyGILState_STATE lock;
lock = PyGILState_Ensure();

并结束它:

PyGILState_Release(lock);

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

问候 克里斯

0 个答案:

没有答案