3

如何在没有问题的情况下并行运行 C++ 和 Boost::Python 代码?

例如,在我的游戏中,我想与 C++ 代码并行执行 Python 代码;如果嵌入式 Python 解释器的代码执行一个阻塞循环,例如while(True): pass,C++ 代码仍将运行并处理帧以使用它自己的循环进行渲染。

我试过了boost::threadstd::thread但除非我将这些线程与主线程结合起来,否则程序会崩溃......

有什么建议或例子吗?

4

2 回答 2

1

您为 Python 解释器使用第二个线程的想法应该可行。确保在您希望运行将调用任何 Python 或 Boost::Python 代码的代码的任何地方都使用PyGILState_Ensure /Release 机制。您可以在此处了解有关此其他 SO 线程的更多详细信息。

于 2013-08-14T13:16:38.400 回答
0

您需要在 python 中使用 multiprocessing 模块,以便为每个 python 线程获得单独的 GIL。

于 2013-08-13T15:31:22.773 回答