使用cpp恢复pthread

时间:2012-05-07 08:27:37

标签: c++ pthreads resume

我正在编写一个程序,在该程序中,只要主线程正在运行,我就有一个在后台运行的守护程序线程。当主线程结束时我想终止守护程序线程,所以我尝试了两种方法:

  1. 如果我使用pthread_kill,即使我将其初始化为可拆卸(我也不需要加入此线程),我的内存泄漏仍然存在。
  2. 由于这不起作用,只要全局bool _daemonRun为真,我就想在循环中运行守护程序线程。在主线程终止之前,我将_daemonRun设置为false,然后在守护进程中我在循环外使用pthread_exit(NULL)。问题是 - 如何恢复线程?使用条件变量似乎很乱,因为我不希望线程等待...
  3. 有什么想法吗?感谢

1 个答案:

答案 0 :(得分:2)

在我看来,您确实关心守护程序线程在主线程存在之前正确释放其资源(例如,内存)。因此,将它创建为分离线程对我来说似乎不对,因为这表明你不关心何时/如果该线程退出。

因此,我建议如下。将守护程序线程创建为普通线程。然后,在主线程存在之前,将_daemonRun设置为false。最后,join()守护程序线程。