我有Runnable类。其中,我使用以下函数来启动新线程:
start()
{
status_ = RUNNING;
mythread_ = boost::thread(boost::ref(*this)); // Line 2
}
我有从Runnable派生的Controller类。 我想使用start()函数
为Controller创建线程所以,在Controller启动功能中,
我用:
controller_->start()
创建一个新线程;
但最终导致第2行的分段错误。
知道可能出了什么问题吗?
答案 0 :(得分:0)
我记得有时候没有为编译器指定线程库会导致段错误。如果您使用的是unix,请尝试将-pthread参数添加到编译器中。似乎不再需要在最新的linux / boost / gcc上了。
答案 1 :(得分:0)
对象的地址仅在成员函数中作为this
指针提供,this
的大部分用法都是隐含的。
或者,您可以创建类的start()
函数,friend
,并直接将对象的引用发送到新线程。