Linux程序通訊之條件變數

2021-10-22 15:18:25 字數 1257 閱讀 7631

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...