引言
之前也記錄過POSIX有名信號量的使用,那麼POSIX有名信號量主要用於進程之間通信【Linux學習筆記42】進程間的通信(四)(POSIX有名信號量)
那麼,這一篇筆記主要是記錄線程之間的POSIX匿名信號量。爲了實現線程之間的同步,可以使用POSIX匿名信號量來實現。
POSIX有名與匿名信號量的區別
- POSIX有名信號量會使用指針使用sem_open函數打開系統中的文件,即POSIX有名信號量存在於文件系統,所有進程可見。
- 線程存在與進程之中,所有線程都存在於同一空間中,可以訪問同一信號量,因此不需要名字也可以訪問,因此線程使用匿名信號量。
代碼的實現
以下面爲例:
有兩條線程s1,s2
t1負責接收鍵盤數據,寫入Buf
t2負責讀出buf中的數據,並且計算其字節數。
使用變量sem_t s1代表buf資源,s1=1爲有資源,s1=0爲無資源。
使用變量sem_t s2代表數據,s2=1爲有數據,s2=0爲無數據。