gpt4 book ai didi

c++ - 如何知道 CThreadPool 的工作何时完成?

转载 作者:行者123 更新时间:2023-11-30 04:40:56 24 4
gpt4 key购买 nike

我最近发现了 ATL 的 CThreadPool 类,对此发现感到非常高兴。这是一个简洁的小类,它将处理让多个工作线程处理一些任务队列的同步语义。这些任务由一些外部进程提供给 CThreadPool 对象。

虽然非常整洁干净,但似乎没有办法查明是否所有任务都已完成。最好的方法是什么?

例如,假设我需要完成 10 项繁重的计算任务,然后继续做其他事情。在我知道任务已经完成之前,我无法继续前进。

因此,我创建了一个包含 10 个线程的 CThreadPool,将任务放入队列中,然后让它们转到线程。我怎么知道任务何时完成?

波阿斯

最佳答案

我认为您需要让工作对象的 Execute() 方法使用“主”线程可以监控的某种形式的 IPC。例如让 Execute() 方法在主线程可以等待的信号量上调用 ReleaseSemaphore() 并计算等待完成的次数。或者,线程池工作人员可以发布一条消息,表明他们已完成一个工作项到主线程从中获取消息的消息队列。

关于c++ - 如何知道 CThreadPool 的工作何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/617938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com