8

我在一个进程中创建了大约 300 个 boost 线程。有没有办法根据线程 id 加入特定线程?

4

1 回答 1

9

这取决于你如何保存boost::threads。如果您将它们保存在容器中(使用T = boost::thread*),您可以简单地使用类似

for(iterator it = ctn.begin(); it != ctn.end(); ++it){
    if(it->get_id() == join_thread_id){
        it->join();
        break;
    }        
}

但是,如果您不将线程保存在某处并且只使用new boost::thread而不保存指针,则这是不可能的,因为 boost 不提供任何自动簿记功能。

1.备注:请记住,您需要使用boost::thread::id来保存id。
2. 备注:std::map<boost::thread::id,boost::thread*>对于此类任务可能会派上用场。

于 2012-12-19T12:07:11.870 回答