PV原理操作之生產者消費者

2021-09-05 10:30:28 字數 468 閱讀 6058

緩衝區大小為k

semaphore mutex=1;//in,out的互斥變數

semaphore empty=k; //可用的緩衝區大小

semaphore full=0; //已占用的緩衝區的大小

semaphore buff[k];//緩衝區

int in=0, out=0;// 寫 讀指標

producer()

}consumer()

}

p(empty)和p(mutex)不可以互換,如果互換,當empty=0,先p(mutex),再p(empty),程序會進入阻塞,由於沒有釋放mutex,使消費者也處於阻塞狀態。

可以用一句話理解。當緩衝區沒地方的時候,不能讓他再獲得使用緩衝區的權利。

其實mutex是為了消費者和消費者 , 生產者和生產者之間的互斥,因此可以使用兩個mutex1, mutex2使併發程度更高一些。

PV操作系列 生產者 消費者

假設 生產者 程序不斷向共享緩衝區寫人資料 即生產資料 而 消費者 程序不斷從共享緩衝區讀出資料 即消費資料 共享緩衝區共有n個 任何時刻只能有乙個程序可對共享緩衝區 臨界區 進行操作。所有生產者和消費者之間要協調,以完成對共享緩衝區的操作。共享緩衝區的大小in,out 0.k 1 in記錄第乙個空...

pv 生產者和消費者

include include include include define buffer size 8 struct products int bufferisfull struct products products return 0 int bufferisempty struct produ...

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

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