3.6 Barrier
Barrier 詳解
Barrier的意思是 障礙、用柵欄圍住
看這部分內容需要考慮3.5節Multiplex的內容,作者想講述的是當等待的線程個數爲n的時候,再開始執行每一個等待的線程。
如下設計會產生死鎖:
原因:
假如有5個thread,這時有4個thread已經到來了,即count爲4,barrier中的信號爲-4,這時又一個thread到來,count爲5,所以barrier中的信號爲-4+1 = -3,但是不能繼續去執行,因爲信號時-3,所以會死鎖。
改成如下,就能解決死鎖的問題:
圖片摘自Little book of semaphores。