C++ 停止线程功能

C++ Stop thread from function

本文关键字:功能 线程 C++      更新时间:2023-10-16

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

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() 或类似函数。