04執行緒通訊 訊號量 函式用法

2021-09-23 13:25:06 字數 546 閱讀 7211

1.建立訊號量 int sem_init(sem_t *sem,int pshared,unsigned int value):

執行成功返回0,失敗eof

示例 sem_init(&sem, 0, 0);

sem 指向要初始化的訊號量物件,傳位址

pshared 0——執行緒間使用 ,1——程序間使用

val 訊號量初值

2.p操作 int sem_wait(sem_t *sem);

成功返回0,失敗eof

示例 sem_wait(&bin_sem);

p操作(申請資源)如果訊號量大於0,申請資源的任務繼續進行,訊號量的值減1

p操作可能引起系統阻塞,v操作一般不會引起阻塞

3.v操作 int sem_post(sem_t *sem);

成功返回0,失敗eof

示例 sem_post(&bin_sem);

v操作(釋放資源)訊號量的值加1

4.刪除訊號量 int sem_destroy(sem_t *sem);

成功則返回 0,失敗返回 -1

多執行緒通訊 訊號量

當當前資源的數量大於0的時候,等待訊號量的執行緒可以獲得乙個資源並繼續執行,訊號量的當前資源數量將減1,如果當前資源的數量為0,則等待訊號量的執行緒將處於等待狀態,直到有執行緒釋放訊號量,使訊號量標識的資源數量大於0 handle createsemaphore lpsecurity attribu...

訊號量通訊

linux程序間通訊 使用訊號 下面就進入訊號量的講解。一 什麼是訊號量 為了防止出現因多個程式同時訪問乙個共享資源而引發的一系列問題,我們需要一種方法,它可以通過生成並使用令牌來授權,在任一時刻只能有乙個執行執行緒訪問 的臨界區域。臨界區域是指執行資料更新的 需要獨佔式地執行。而訊號量就可以提供這...

linux執行緒間通訊 訊號量

鎖機制使用是有限制的,鎖只有兩種狀態,即加鎖和解鎖,對於互斥的訪問乙個全域性變數,這樣的方式還可以對付,但是要是對於其他的臨界資源,比如說多台印表機等,這種方式顯然不行了。訊號量機制在作業系統裡面學習的比較熟悉了,訊號量是乙個整數計數器,其數值表示空閒臨界資源的數量。當有程序釋放資源時,訊號量增加,...