2010-11-08 33 views
4

我有一个类与像一些功能:如何使助推线程自毁? (C++)

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)); 
} 

所以它会创建线程,每次它可以。但我需要的是该线程在完成时自动销毁。如何做这样的事情?

回答

5

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

+0

好的 - 我喜欢这听起来。但是,如果这是真的thread.join用于什么? – Rella 2010-11-08 10:29:15

+3

有时候你有线程有无限循环(例如监听传入的网络流量)。在这种情况下,您必须向该线程发送信号以使其停止,然后与其联系以确保其停止。另一种情况是线程正在为您完成一些任务,并且您只能在该任务完成时继续。 – 2010-11-08 10:30:51

2

一个线程在完成运行它所创建的函数时会自动结束。

连接是一个奇怪的词,它的确意味着wait_for这意味着等待线程完成执行。

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