【发布时间】:2018-01-07 18:43:08
【问题描述】:
我有函数 foo:
void foo(){
//Command set A
std::this_thread::sleep_for(100s);
//Command set B
}
Command set A 的第一部分必须阻止执行。但是,sleep 部分和//Command set B 不必阻塞执行,也不返回任何数据。
所以我实现如下:
void foo(){
//Command set A
std::thread t([](){
std::this_thread::sleep_for(100s);
//Command set B
}
t.detach()
}
我在这里正确使用detach 了吗?它是使用detach 的正确地方吗?有没有更好的解决方案?
【问题讨论】:
-
我想说分离是正确的,只要你不关心命令集 B 的任何输出(比如它是否失败)。如果你加入,它会阻止。
-
退出程序时最好确保没有其他线程在运行。我看不出你会如何在当前的实现中做到这一点。
-
就个人而言,我会说永远不要使用
detach,除非你已经建立了控制线程消亡的机制。 -
@nwp 所以,换句话说,分离作为一个概念是不推荐的?
-
@Galik 其实我的问题有点假设。我用另一种方式解决了我的问题。但我想知道是否为这种情况创建了分离。所以,我问了。
标签: c++ multithreading detach