是否可以创建一个boost :: thread并在后台运行它(作为一个守护进程)? 我正在尝试以下但是当主要退出时我的线程会死掉。
/*
* Create a simple function which writes to the console as a background thread.
*/
void countDown(int counter) {
do {
cout << "[" << counter << "]" << endl;
boost::this_thread::sleep(seconds(1));
}while(counter-- > 0);
}
int main() {
boost::thread t(&countDown, 10);
if(t.joinable()) {
cout << "Detaching thread" << endl;
t.detach(); //detach it so it runs even after main exits.
}
cout << "Main thread sleeping for a while" << endl;
boost::this_thread::sleep(seconds(2));
cout << "Exiting main" << endl;
return 0;
}
[rajat @ localhost threads] $ ./a.out
分离线程
主线休眠一段时间
[10]
[9]
退出主要
[rajat @ localhost threads] $
答案 0 :(得分:2)
当你的main()
退出进程的所有其他线程时终止(假设Linux,不能说对于Windows)。
为什么不在join()
末尾的main()
背景线程?或者甚至更好 - 使用主线程作为“守护进程”线程?