ThreadedMethod
1)
的线之间可能发生某些事情,例如,新工作可能会到来,这可能会产生不一致的状态。因此,我正在寻求一种方法来以某种方式悬挂线程并解锁互惠符“同时”。
现在,我正在寻找如何利用Winapi事件来解决问题,但是我也很有趣如何使用标准C ++功能解决该问题。
您可以使用信号量原始图。信号量使用未签名的计数器和一个过程队列和支持2个原子上增加和减少计数器的操作。如果计数器的减小会使它的速度低于0,则该线程调用
2)
悬挂。
要执行此操作,您需要2个信号量,
wait()
,free_slots(size_queue)
addJob
(如果队列已满,则暂停)并在
free_slots
信号量上执行post()
,向最终悬挂的消费者发出信号。注意,由于必须顺序执行队列操作,因此仍然需要静音。
available
您可以使用条件变量获得相似的结果。