【发布时间】:2018-07-23 14:04:01
【问题描述】:
假设我有一个小操作,我想在一个单独的线程中执行。我不需要知道它何时完成,也不需要等待它完成,但我不希望该操作阻塞我当前的线程。当我编写以下代码时,我会崩溃:
void myFunction() {
// do other stuff
std::thread([]()
{
// do thread stuff
});
}
通过将线程分配给变量并将其分离来解决此崩溃:
void myFunction() {
// do other stuff
std::thread t([]()
{
// do thread stuff
});
t.detach();
}
为什么需要这一步?或者有没有更好的方法来创建一个小的一次性线程?
【问题讨论】:
-
std::thread([]() { }).detach();怎么样?是缺少变量导致崩溃还是缺少分离? -
这看起来不像是重复的。这个问题是问为什么
std::thread有这个设计,而不是如何让崩溃消失。 -
@Sneftel 这确实是我的问题。
-
我同意。 OP 已经确定需要
.detach- 这是为什么,以及是否有更好的方法。 -
@GoswinvonBrederlow 这是缺乏分离...所以这是一个答案。
标签: c++ multithreading std stdthread