gpt4 book ai didi

c++ - std::thread 不是全局变量,但在到达创建它的函数的末尾时不会超出范围?

转载 作者:行者123 更新时间:2023-11-30 00:43:51 25 4
gpt4 key购买 nike

所以我遇到了一些似乎违背了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com