1.生產(chǎn)者消費(fèi)者問題
一個(gè)消費(fèi)者一個(gè)生產(chǎn)者時(shí)
semaphore full , empty;
empty = n , full = 0;
int in = 0 , out = 0;
cobegin
process producer () { process consumer () {
while(true){ while(true){
produce(); P(full);
P(empty); out = (out+1)%n;
in = (in+1)%n; V(empty);
V(full); comsumer();
} }
} }
coend
而一組消費(fèi)者,一組生產(chǎn)者時(shí),不僅生產(chǎn)者與消費(fèi)者之間要同步,而且各個(gè)生產(chǎn)者之間、各個(gè)消費(fèi)者之間還必須互斥地訪問緩沖區(qū)。
所以要多一個(gè)互斥的信號(hào)mutex
semaphore full , empty , mutex;
empty = n , full = 0 , mutex = 1;
int in = 0 , out = 0;
cobegin
process producer () { process consumer () {
while(true){ while(true){
produce(); P(full);
P(empty); P(mutex) ;
P(mutex) ; out = (out+1)%n;
in = (in+1)%n; V(mutex) ;
V(mutex) ; V(empty);
V(full); comsumer();
} }
} }
coend