【Linux學習筆記46】線程的同步(POSIX匿名信號量)

引言

之前也記錄過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爲無數據。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章