使用 cpp 恢复线程

Resuming a pthread using cpp

本文关键字:线程 恢复 cpp 使用      更新时间:2023-10-16

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

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

有什么想法吗?谢谢

在我看来

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

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