如何从调用的函数中停止线程?
void foo()
{
cout << hello << endl;
t.join(); //Is it possible to do something like this?
}
int main()
{
thread t(foo);
return 0;
}
我试图将自己作为这样的参数传递:线程t(foo,t),但这给了我一个错误。
最佳答案
当foo()
返回时,您的线程将自动终止。 join
是没有意义的-它永远不会返回。 join()只会等待该线程终止-在这种情况下永远不会发生。
如果您需要终止另一个线程(例如您的主线程)的线程,则需要自己进行通信。通过标志(和互斥量/条件变量)或例如管道,如果您使用select()
,poll()
或类似函数。
关于c++ - C++从函数停止线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29071456/