boost :: make_shared对创建的shared_ptr的引用

时间:2014-03-11 12:22:26

标签: c++ boost

我想在我的应用程序中创建另一个线程,所以我这样做:

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中吗?或者也许有更好的方法?

1 个答案:

答案 0 :(得分:4)

您无法将线程指针t传递到thread_routine boost::bind,因为t在创建线程之后才会初始化, boost::bind来电已退回。

您应该尝试避免在线程本身内需要指向线程对象的指针。请改为查看boost::this_thread命名空间中的函数。