mamutu02
2016-07-20 19:11
采纳率: 83.3%
浏览 2.7k
已采纳

主线程退出前等待多个子线程终止的一些问题

现在情况是,主线程会不时的创建子线程,有些子线程很快退出,有的会运行一段时间再退出,有的会一直运行,只有主线程通知后才会退出。无法事先预知到主线程会创建多少个、什么样的线程。
.
主线程退出之前会发出通知,其余还在运行的线程接到通知后会自行退出。现在,主线程需等待其余线程安全退出,怎么办?
.
最容易想到的办法是,主线程CreateThread后,将返回的句柄加入一个列表。主线程终止之前,挨个对列表中的句柄WaitForSingleObject。问题是,这样做的话CreateThread返回的句柄在程序运行的时候会一直存在无法释放,程序长时间运行后句柄越来越多,可以视作内核对象泄漏。如何解决这个问题?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 伪码匠 2016-07-21 04:44
    已采纳

    1.简单的线程池模型。
    2.线程a负责创建线程,线程b负责监测线程状态,a和b共享一个句柄列表。
    3.线程b在检测到线程退出后释放句柄。
    4.主线程在退出时,向线程b查看状态,状态全部返回则退出,否则等待。
    5.状态通信可以用变量、信号、事件等。
    6.TODO你的。。。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2016-07-21 00:28
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题