3.6 Barrier

Barrier 详解

Barrier的意思是  障碍、用栅栏围住

 

看这部分内容需要考虑3.5节Multiplex的内容,作者想讲述的是当等待的线程个数为n的时候,再开始执行每一个等待的线程。

 

如下设计会产生死锁:

Little book of semaphores详解

原因:

假如有5个thread,这时有4个thread已经到来了,即count为4,barrier中的信号为-4,这时又一个thread到来,count为5,所以barrier中的信号为-4+1 = -3,但是不能继续去执行,因为信号时-3,所以会死锁。

 

改成如下,就能解决死锁的问题:

Little book of semaphores详解

图片摘自Little book of semaphores。

相关文章: