我正在编写一个程序,在该程序中,只要主线程正在运行,我就有一个在后台运行的守护程序线程。当主线程结束时我想终止守护程序线程,所以我尝试了两种方法:
bool _daemonRun
为真,我就想在循环中运行守护程序线程。在主线程终止之前,我将_daemonRun
设置为false,然后在守护进程中我在循环外使用pthread_exit(NULL)
。问题是 - 如何恢复线程?使用条件变量似乎很乱,因为我不希望线程等待... 有什么想法吗?感谢
答案 0 :(得分:2)
在我看来,您确实关心守护程序线程在主线程存在之前正确释放其资源(例如,内存)。因此,将它创建为分离线程对我来说似乎不对,因为这表明你不关心何时/如果该线程退出。
因此,我建议如下。将守护程序线程创建为普通线程。然后,在主线程存在之前,将_daemonRun
设置为false
。最后,join()守护程序线程。