如何同时暂停线程并从此线程解锁互斥x 我有一系列作业,应该不同步(如果很重要的话,实际发送HTTP请求),我希望执行者线程暂停,直到队列为空,直到新作业到达为止。我希望

问题描述 投票:0回答:1
在此片段中,不同步悬挂其线程,我担心在标记

ThreadedMethod

1)
的线之间可能发生某些事情,例如,新工作可能会到来,这可能会产生不一致的状态。因此,我正在寻求一种方法来以某种方式悬挂线程并解锁互惠符“同时”。

现在,我正在寻找如何利用Winapi事件来解决问题,但是我也很有趣如何使用标准C ++功能解决该问题。

	
您可以使用信号量原始图。信号量使用未签名的计数器和一个过程队列和支持2个原子上增加和减少计数器的操作。如果计数器的减小会使它的速度低于0,则该线程调用
2)
悬挂。
要执行此操作,您需要2个信号量,
wait()

free_slots(size_queue)

。当线程呼叫
c++ winapi
1个回答
0
投票
等待

addJob

(如果队列已满,则暂停)并在
free_slots

信号量上执行

post()

,向最终悬挂的消费者发出信号。
注意,由于必须顺序执行队列操作,因此仍然需要静音。
available
您可以使用条件变量获得相似的结果。
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.