-
大小: 153KB文件類(lèi)型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-01-07
- 語(yǔ)言: C/C++
- 標(biāo)簽: 操作系統(tǒng)??pv原理??C??
資源簡(jiǎn)介
包含操作系統(tǒng)pv原理9道經(jīng)典習(xí)題,及偽碼解答,還有理發(fā)師問(wèn)題C語(yǔ)言解答。
代碼片段和文件信息
#include??
#include??
#include??
#include??
#define?MAX?6?//最大椅子的數(shù)量
sem_t?barber;?
sem_t?customer;?
sem_t?mutex;?//互斥信號(hào)量
int?count?=?0;?//計(jì)數(shù):等待理發(fā)的顧客數(shù)
int?chairs?=?MAX;?
void?*Barber(void?*arg){?
while(count>-1){?
printf(“理發(fā)師等待顧客...\n“);?
sem_wait(&customer);?//等待顧客
printf(“理發(fā)師:正在理發(fā)中...\n“);?
sem_wait(&mutex);?//理發(fā)結(jié)束
count--;?
chairs++;?
printf(“理發(fā)師理完了,此時(shí)正在等待的顧客數(shù)為:%d\n“count);?
sem_post(&barber);?
sem_post(&mutex);?
printf(“歡迎下次光臨!\n“);?
}?
}?
void?*Customer(void?*arg){?
sem_wait(&mutex);
printf(“請(qǐng)顧客%d坐\n“(int?*)(arg+1));?
if(chairs?>?0){?//如果當(dāng)前有空余座位
count++;?//顧客數(shù)量+1?
chairs--;?//占用一個(gè)座位
printf(“正在等待的顧客為%d,請(qǐng)理發(fā)師加油!\n“count);?
sem_post(&customer);?//等待理發(fā),喚醒理發(fā)師
sem_post(&mutex);?//允許其他顧客進(jìn)門(mén)
sem_wait(&barber);?//當(dāng)理發(fā)師空閑時(shí)開(kāi)始理發(fā)
}else?{?//沒(méi)有空余座位,準(zhǔn)備離
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-11-04?20:56??操作系統(tǒng)pv原理9道經(jīng)典偽碼及理發(fā)師問(wèn)題C語(yǔ)言實(shí)現(xiàn)\
?????文件???????35840??2015-11-04?19:58??操作系統(tǒng)pv原理9道經(jīng)典偽碼及理發(fā)師問(wèn)題C語(yǔ)言實(shí)現(xiàn)\9道題答案.doc
?????文件??????155655??2013-12-18?09:40??操作系統(tǒng)pv原理9道經(jīng)典偽碼及理發(fā)師問(wèn)題C語(yǔ)言實(shí)現(xiàn)\ex01.pv.pdf
?????文件????????1612??2015-11-04?20:47??操作系統(tǒng)pv原理9道經(jīng)典偽碼及理發(fā)師問(wèn)題C語(yǔ)言實(shí)現(xiàn)\理發(fā)師.c
評(píng)論
共有 條評(píng)論