C++ 在实现线程池时查找可用的pthread

C++ 在实现线程池时查找可用的pthread,c++,multithreading,design-patterns,pthreads,threadpool,C++,Multithreading,Design Patterns,Pthreads,Threadpool,我尝试使用C++中的p螺纹实现一个基本线程池类。了解传入任务是否可以分配给池中给定线程的简单方法是什么?即,如何检查哪些线程不再运行 谢谢。您当前如何保存池中线程的信息?你有向量还是数组?你能把它做成一个结构向量来保持一个“忙碌”的标志吗?或者添加第二个状态向量?如果pthreads支持原子操作,那么一个简单的解决方案就是线程选择一个任务,减少一个计数器,并在线程完成任务后增加计数器。计数器的值显示可用线程数。请详细说明?我保存了一个pthreads向量。假设我创建了一个布尔标志向量,指示pth

我尝试使用C++中的p螺纹实现一个基本线程池类。了解传入任务是否可以分配给池中给定线程的简单方法是什么?即,如何检查哪些线程不再运行


谢谢。

您当前如何保存池中线程的信息?你有向量还是数组?你能把它做成一个结构向量来保持一个“忙碌”的标志吗?或者添加第二个状态向量?如果
pthreads
支持原子操作,那么一个简单的解决方案就是线程选择一个任务,减少一个计数器,并在线程完成任务后增加计数器。计数器的值显示可用线程数。请详细说明?我保存了一个pthreads向量。假设我创建了一个布尔标志向量,指示pthread是否繁忙。如何更新布尔向量?即使我在pthread运行的函数的最后一行更新它,仍然有可能函数没有完全完成,并且标志已经更新。使用计数器时也会出现同样的问题。线程池通常有一组现有但空闲的线程(等待条件变量或类似变量)。当线程应该做某事时,它调用一个“work”函数,当该函数返回时,它返回空闲状态。当“work”函数返回时,它不会直接返回空闲状态,而是设置或清除标志。在调用“work”函数之前,它会对标志执行相反的操作。“工作”功能本身不必关心它。