信号量和互斥量
轉(zhuǎn)自:http://learning.iteye.com/blog/1327503
1. 互斥量用于線程的互斥,信號線用于線程的同步。 ? ?
??
這是互斥量和信號量的根本區(qū)別,也就是互斥和同步之間的區(qū)別。 ? ?
??
互斥:是指某一資源同時只允許一個訪問者對其進(jìn)行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。 ? ?
??
同步:是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過其它機制實現(xiàn)訪問者對資源的有序訪問。在大多數(shù)情況下,同步已經(jīng)實現(xiàn)了互斥,特別是所有寫入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個訪問者同時訪問資源 ? ?
??
2. 互斥量值只能為0/1,信號量值可以為非負(fù)整數(shù)。 ? ?
??
也就是說,一個互斥量只能用于一個資源的互斥訪問,它不能實現(xiàn)多個資源的多線程互斥問題。信號量可以實現(xiàn)多個同類資源的多線程互斥和同步。當(dāng)信號量為單值信號量是,也可以完成一個資源的互斥訪問。 ? ?
??
3. 互斥量的加鎖和解鎖必須由同一線程分別對應(yīng)使用,信號量可以由一個線程釋放,另一個線程得到。 ?
信號量 ??
總結(jié)