我有一个类有以下功能的类:
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));
}
所以每次都可以创建线程。但我需要的是该线程在完成后自动销毁。怎么做这个?
答案 0 :(得分:5)
您无需为此做任何事情。你只需要确保线程真正完成(即没有无限循环等)。
答案 1 :(得分:2)
线程将在完成运行创建它的函数后自动结束。
join是一个奇怪的词,它实际上意味着wait_for,这意味着等待线程完成执行。
如果你想保留一个线程以便重复使用,它通常是通过使其功能循环实现的,每次都达到“等待”状态,当它等待的事情发生时它会被警告(唤醒)。在某些时候,这将是终止请求,或导致其终止的请求。