如何使增强螺纹自毁? (C ++)

时间:2010-11-08 10:23:15

标签: c++ multithreading class function boost

我有一个类有以下功能的类:

void workerFunc(int ClassVariable)  
{  
    boost::posix_time::seconds workTime(classVariableA);  

    std::cout << "Worker: running" << std::endl;  

    // Pretend to do something useful...  
    boost::this_thread::sleep(workTime);  


    std::cout << ClassVariable << std::endl;  
    std::cout << "Worker: finished" << std::endl;  
}  

我希望在线程中。和其他一些我想要工作的功能

while(1)
{
 boost::thread workerThread(workerFunc(ClassVariableB));  
}

所以每次都可以创建线程。但我需要的是该线程在完成后自动销毁。怎么做这个?

2 个答案:

答案 0 :(得分:5)

您无需为此做任何事情。你只需要确保线程真正完成(即没有无限循环等)。

答案 1 :(得分:2)

线程将在完成运行创建它的函数后自动结束。

join是一个奇怪的词,它实际上意味着wait_for,这意味着等待线程完成执行。

如果你想保留一个线程以便重复使用,它通常是通过使其功能循环实现的,每次都达到“等待”状态,当它等待的事情发生时它会被警告(唤醒)。在某些时候,这将是终止请求,或导致其终止的请求。