所以我遇到了一些似乎违背了 std::thread
目的的东西,或者至少让它不太方便。
假设我想生成一个 std::thread
来执行一次任务并且之后不想再担心它。我在函数末尾附近创建了这个 thread
因此 std::thread
很快就会超出范围,在我的例子中,很可能在 thread
仍在运行。这会产生一些解决方案(或者至少我知道的)的问题。
我可以:
A) 使 std::thread
成为全局变量,这样它就不会超出范围。
B) 在 std::thread
上调用 join()
,这违背了生成线程的目的。
是否有其他更好的方法来处理这种情况?
最佳答案
你要的是std::thread::detach .
它将实际执行线程与 std::thread
对象分离,允许您在不加入线程的情况下销毁它。
关于c++ - std::thread 不是全局变量,但在到达创建它的函数的末尾时不会超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52196612/