在C++中,是否有任何理由生成并立即加入线程,而不仅仅是直接调用函数?

In C++, is there any reason to spawn and immediately join a thread, instead of just calling the function directly?

本文关键字:线程 不仅仅是 函数 调用 是否 C++ 任何 理由      更新时间:2023-10-16

C++,有人想写有什么理由吗

std::thread t(foo);
t.join();

foo();

在我看来,第一个选项只是无缘无故地使用更多资源来创建线程,但我错过了什么吗?

C++ 只是因为你想要新的线程本地状态,然后处理它。 可能是一个糟糕的解散。

在某些执行环境中,代码在主线程中的行为与在主线程外部的行为不同,这C++之外。

这可确保代码不会在主线程(通常是 UI)线程中运行,同时仍确保它是阻塞和同步的。

一个实际的倾向可能是运行一些任务,它以你不信任的方式弄乱了它自己的线程状态,也不知道如何完全逆转。 即第三方库。 这基本上是第一种情况,但您正在尝试将自己从无法重写的不良代码中拯救出来。