1、條件變數:等待與訊號傳送
2、互斥鎖用於上鎖,條件變數用於等待
每個條件變數總有互斥鎖和它對應。
3、函式
int
pthread_cond_wait
(pthread_cond_t *cptr, pthread_mutex_t *mptr)
;//消費者消費完所有訊號,進入休眠狀態
intpthread_cond_signal
(pthread_cond_t *cptr)
;//生產者產生訊號,喚醒等待該訊號的消費者
4、消費者->生產者模型解釋
/*僅示例 無法編譯通過*/
#define maxnitems 1000000
#define maxnthreads 100
int nitems;
int buff[maxnitems]
;struct
put =
;struct
nready =
;void
*produce
(void
*arg)
buff[put.nput]
= put.nval;
put.nput++
; put.nval++
;pthread_mutext_unlock
(&put.mutext)
;pthread_mutext_lock
(&nready.mutext)
;//給消費者的計數增加
if(nready.nready ==0)
//如果當前該值為0,生產者產生了訊號,自增,肯定有消費者來消費
nread.nready++
;pthread_mutext_unlock
(&nread.mutext);*
((int*
)arg)+=
1;}}
void
*consume
(void
*arg)
nready.nready--
;pthread_mutext_unlock
(&nready.mutext);if
(buff[i]
!= i)
printf
("buff[%d] = %d\n"
, i, buff[i]);
}return
(null);
}
執行緒通訊之條件變數
pthread cond wait 用法 ptread mutex lock mut pthread cond wait cond,mut pthread mutex unlock mut pthread cond signal cond 的用法和pthread cond wait是一樣的。我們先來...
Linux 之 條件變數
pthread cond init函式 pthread cond destroy函式 pthread cond wait函式 pthread cond timedwait函式 pthread cond signal函式 pthread cond broadcast函式 以上6 個函式的返回值都是 成...
Linux之程序通訊
一 共享記憶體 系統呼叫 shmget 當shmget 建立了一塊新的共享記憶體後,返回乙個可以用於引用該共享記憶體的shmid ds資料結構的識別符號。原型 int shmget key t key,int size,int shm 返回值 如果成功,返回共享記憶體段識別符號。如果失敗,則返回 1...