我知道很多人都会问这个问题,但我不是很多人"我需要一个不同的,更好的解释来理解。
成员函数" detach()"到底是做什么的? 我尝试运行下一个代码示例:
#include <iostream>
#include <chrono>
#include <thread>
void independentThread()
{
std::cout << "Starting concurrent thread.\n";
std::this_thread::sleep_for(std::chrono::seconds(200));
std::cout << "Exiting concurrent thread.\n";
}
void threadCaller()
{
std::cout << "Starting thread caller.\n";
std::thread t(independentThread);
t.detach();
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Exiting thread caller.\n";
}
int main()
{
threadCaller();
std::this_thread::sleep_for(std::chrono::seconds(5));
}
5秒后所有程序关闭。 我认为该程序将在&#34; main&#34;之后的另外195秒打开。关闭,因为&#34;分离&#34;的所有想法这是独立的主要,所以在独立的方式,它应该仍然运行,直到所有分离的therades终止... 我阅读了文档并来到了这里。 更好的解释 - 请! :)
答案 0 :(得分:0)
分离线程是一个你不能等待完成的线程。 std::thread
析构函数将检查线程是分离还是连接,如果两者都没有发生,将中止程序(调用std::terminate
)。
main()
终止后,程序也无条件终止,不等待任何线程,分离或其他。