解决方法二:主线程退出并不干预子线程的销毁
C++种提供了detach()函数,detach函数就是让子线程与主线程分离,主线程不再干预子线程的运行,缺点就是主线程无法获取子线程的执行结果,因为主线程此时已经退出。下面的代码可以正常运行,但是不会打印"task1 says hello"。
void task1(std::string msg){
std::cout << "task1 says: " << msg;
}
int main() {
std::thread t1(task1, "hello");
t1.detach();
return 0;
}
|