【问题标题】:Resuming a pthread using cpp使用 cpp 恢复 pthread
【发布时间】:2012-05-07 08:27:37
【问题描述】:

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

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

有什么想法吗?谢谢

【问题讨论】:

  • 当您只想在进程结束时杀死线程时,我不明白您的意思是恢复它
  • '当进程结束时我想终止线程' - 是否有任何压倒一切的理由明确地这样做?如果没有,请结束该过程并让操作系统清理。

标签: c++ pthreads resume


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多