1

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

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

有任何想法吗?谢谢

4

1 回答 1

2

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

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

于 2012-05-07T10:08:12.597 回答