Boost::make_shared引用创建的shared_ptr

boost::make_shared reference to created shared_ptr

本文关键字:shared ptr 创建 引用 Boost make      更新时间:2023-10-16

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

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?或许还有更好的办法?

你不能将线程指针tboost::bind传递到thread_routine,因为t直到线程创建之后才初始化,这是在boost::bind调用返回之后。

应该尽量避免在线程本身中使用指向线程对象的指针。让我们来看看boost::this_thread名称空间中的函数。