本文共 948 字,大约阅读时间需要 3 分钟。
Bounded-Buffer Problem
semaphore full, empty, mutex;Initially:full = 0, empty = n, mutex = 1
do { … produce an item in nextp … wait(empty); wait(mutex); … add nextp to buffer … signal(mutex); signal(full); } while (1);
do { wait(full) wait(mutex); … remove an item from buffer to nextc … signal(mutex); signal(empty); … consume the item in nextc … } while (1);
Readers-Writers Problem
读者优先 写者优先
semaphore mutex, wrt;Initiallymutex = 1, wrt = 1, readcount = 0
wait(mutex);readcount++; if (readcount == 1) wait(wrt);signal(mutex); …reading is performed … wait(mutex);readcount--;if (readcount == 0) signal(wrt);signal(mutex):
Dining-Philosophers Problem
Philosopher i: do { wait(chopstick[i]) wait(chopstick[(i+1) % 5]) … eat … signal(chopstick[i]); signal(chopstick[(i+1) % 5]); … think … } while (1);
转载地址:http://rlgwi.baihongyu.com/