思考
p和p每次執行時需要進行一些額外的操作對於p來說它首先必須在自己的緩沖區buf中寫入至少m個數據此後p和p的同步可簡單通過兩個信號量來控制題目的一個變形是要求m≤(buf數據個數-buf數據個數)≤n那麼信號量的初值就變成m和n若只有p向buf放入數據而p不放入數據到buf中則p最多可放m次因此設置信號量s初值為m此外每當p放入一個數據到buf中時則使信號量s增1即p增加一次放入數據到buf的機會反之若只有p向buf放入數據而p不放入數據到buf中則p最多可放n次因此設置信號量s初值為n此外每當p放入一個數據到buf中時則使信號量s增1即p增加一次放入數據到buf的機會
The PV code Using Pascal
begin
var mutex=mutex=s=ms=n:semaphore;
cobegin
process p
begin
repeat;
get data;
p(s);
p(mutex);
寫數據到buf;
v(mutex);
v(s); //p每放入一個數據到buf同時使s增加1
end
process p
begin
repeat;
get data;
p(s);
p(mutex);
寫數據到buf;
v(mutex);
v(s); //p每放入一個數據到buf同時使s增加1
end
coend
end
返回《操作系統之PV金典》
[] []
From:http://tw.wingwit.com/Article/program/czxt/201311/24173.html