資源簡介
閱覽室里有20個座位,外面有10個等待位,若讀者來時發(fā)現(xiàn)等待位已滿則離去。用C語言多線程實現(xiàn),用信號量實現(xiàn)同步互斥
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#define?READING?0;
#define?WAITING?1;
int?readerNum=0;
int?waitNum=0;
sem_t?synchronize;
sem_t?seat;
sem_t?room;
void?*waitingroom()?{
????while(1)?{
sem_wait(&synchronize);
sem_wait(&seat);
waitNum=waitNum+1;
printf(“There?are?%d?readers?reading.?\n“?readerNum);
printf(“There?are?%d?readers?waiting.?\n“?waitNum);
????}
}
void?*come()?{
????while(1)?{
??????printf(“---------------------------------\n“);
??????printf(“A?new?reader?comes.?\n“);
??????
??????if(readerNum>=20&&waitNum>=10)?{
printf(“The?reader?left.?\n“);
??????}else?if(readerNum>=20)?{
??printf(“A?new?reader?is?waiting.?\n“);
??sem_post(&synchronize);
??sem_wait(&room);
??????}else?{
readerNum=readerNum+1;
printf(“There?are?%d?readers?reading.?\n“?readerNum);
printf(“There?are?%d?readers?waiting.?\n“?waitNum);
??????}
??????sleep(1);
????}
????
}
int?main()?{
????int?res;
????pthread_t?thread;
??
- 上一篇:mfc的odbc數(shù)據(jù)庫連接方法
- 下一篇:國密SM2算法C代碼
評論
共有 條評論