天天看點

信号量與互斥鎖之間的差別

(1):互斥量用于線程的互斥,信号線用于線程的同步。這是互斥量和信号量的根本差別,也就是互斥和同步之間的差別。

(2):互斥量值隻能為0/1,信号量值可以為非負整數。

也就是說,一個互斥量隻能用于一個資源的互斥通路,它不能實作多個資源的多線程互斥問題。

信号量可以實作多個同類資源的多線程互斥和同步。當信号量為單值信号量是,也可以完成一個資源的互斥通路。信号量是通過一個計數器控制對共享資源的通路,信号量的值是一個非負整數,所有通過它的線程都會将該整數減一。如果計數器大于0,則通路被允許,計數器減1;如果為0,則通路被禁止,所有試圖通過它的線程都将處于等待狀态。