如何从调用的函数中停止线程?

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/

10-11 22:59
查看更多