当启动线程时,它将一直执行到完成为止。
通常,在某个时候,您需要(可能-线程可能已经完成)等待线程完成,因为您想使用例如结果。
int n;
std::thread thread{ calculateSomething, std::ref(n) };
//做其他事情
//我们现在需要'n'!
//等待线程完成-如果尚未完成
thread.join();
//现在,“ n”具有在单独线程中完成的计算结果
std::cout << n << '\n';您还可以detach使用线程,使其自由执行:
std::thread thread{ doSomething };
//分离线程,我们不再需要它(无论出于何种原因)
thread.detach();
//该线程将在完成或主线程返回时终止