#include <iostream>
#include <thread>
void function_1() {
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cout << "I'm function_1()" << std::endl;
}
void test_detach() {
std::thread t1(function_1);
t1.detach();
std::cout << "test_detach() finished" << std::endl;
}
void test_join() {
std::thread t1(function_1);
t1.join(); //Block until function exec finished.
std::cout << "test_join() finished" << std::endl;
}
int main() {
test_detach();
//test_join();
//讓主線程晚于子線程結(jié)束
std::this_thread::sleep_for(std::chrono::milliseconds(1000)); //延時(shí)1s
return 0;
}
// 執(zhí)行結(jié)果:
// 使用test_detach時(shí)
// test_detach() finished
// I'm function_1()
// 使用 test_join()時(shí)
// I'm function_1()
// test_join() finished
當(dāng)使用detach()時(shí),如果去掉main函數(shù)中的1s延時(shí)厌秒,會(huì)發(fā)現(xiàn)function_1的信息沒有打印读拆,因?yàn)橹骶€程執(zhí)行的太快,整個(gè)程序已經(jīng)結(jié)束了鸵闪,那個(gè)后臺(tái)線程被C++運(yùn)行時(shí)庫回收了檐晕。