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

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

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

  • 写回答

2条回答 默认 最新

  • 伪码匠 2016-07-21 04:44
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环