條件變數 互斥鎖解決生產者消費者模型

2021-07-05 03:50:07 字數 531 閱讀 3200

**實現:

int num = 0;

pthread_mutex_t mutex ;

pthread_cond_t  condition;

void *producer(void *arg)

void *cusumer(void* arg)

num--;

pthread_mutex_unlock(&mutex);

}首先,條件變數一定要和互斥鎖一起使用,因為防止多個執行緒同時請求pthread_cond_wait()

pthread_cond_wait()

做了3個操作{

1.釋放已經獲得的鎖.

2.進入休眠.(掛起)

3.等待某個條件成立,甦醒過來

linux核心將其做成了乙個原子性的操作;

pthread_cond_signal();

當條件成立的時候,喚醒等待的執行緒;

互斥量,生產者消費者

如果不需要訊號量的計數能力,有時可以使用訊號量的乙個簡化版本,稱為互斥量 mutex 互斥量僅僅適用於管理共享資源或一小段 由於互斥量在實現時既容易又有效,這使得互斥量在實現使用者空間執行緒包時非常有用。互斥量是乙個可以處於兩態之一的變數 解鎖和加鎖。這樣,只需要乙個二進位制位表示它,不過實際上,常...

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

Python 執行緒 條件鎖 生產者消費者模型

code import threading from threading import thread from threading import condition import time import random c condition 條件鎖 itemnum 0 item 0 def cons...