我想在我的应用程序中创建另一个线程,所以我这样做:
typedef boost::shared_ptr<boost::thread> wild_thread;
void thread_routine(wild_thread t) {
// do stuff
}
int main() {
{
wild_thread t;
t.reset(new boost::thread(boost::bind(&thread_routine, t)));
}
// do other stuff
}
但这很难看,我需要将这个临时的shared_ptr命名为。
所以,问题是,无论如何我可以用boost::make_shared
这样做吗?我可以以某种方式要求它将新创建的shared_ptr绑定到我的thread_routine中吗?或者也许有更好的方法?
答案 0 :(得分:4)
您无法将线程指针t
传递到thread_routine
boost::bind
,因为t
在创建线程之后才会初始化, boost::bind
来电已退回。
您应该尝试避免在线程本身内需要指向线程对象的指针。请改为查看boost::this_thread
命名空间中的函数。