cpf*_*cpf 3 python crash multithreading boost
似乎boost :: python和boost :: thread并不是真的很喜欢彼此.
请参阅http://pastebin.com/Cy123mJK
这是我使用boost :: python和boost :: thread-based应用程序时遇到的问题的简化.
如果有人能告诉我为什么会出现这些问题; 我不知道,因为我严格确保python交互一次完成一个线程.
在某些时候,程序崩溃与段错误没有明显的原因.而且,似乎不可能抓住这次崩溃......
非常感谢!
你是在同时运行多个线程蟒蛇Producer::run()和Consumer::run().
确切地说,在锁定互斥锁之前运行此命令:
boost::python::object writer = this->k->Get<boost::python::object>("write");
Run Code Online (Sandbox Code Playgroud)
也许你没有意识到,升压最终调用PyObject_GetItem,当你调用boost::python::object::operator[](const std::string&)在Keeper::Get.在锁定之后和使用返回的函数之前,您需要将Get-call移动到正确的位置:
{
boost::mutex::scoped_lock l(this->k->python_keeper);
boost::python::object writer = this->k->Get<boost::python::object>("write");
writer(boost::python::str(os.str()));
}
Run Code Online (Sandbox Code Playgroud)
编辑:删除Py_Finalize().是的你是对的,boost.python不喜欢它.
| 归档时间: |
|
| 查看次数: |
1506 次 |
| 最近记录: |