📄 chengxuyuanma.txt
字号:
#include<stdio.h>
#include<pthread.h>
#include<semaphore.h>
#include<stdlib.h>
#include<unistd.h>
int i=0,n=0,count=0;
int position[6]={-1,-1,-1,-1,-1,-1};
pthread_mutex_t mutex;
sem_t empty;
time_t end;
int chair[10];
int j,k,p;
int curr=1;
void *reader(void* arg);
main()
{
pthread_t id[10];
pthread_mutex_init(&mutex,NULL);
sem_init(&empty,0,5);
time_t t;
srand((unsigned)time(&t));
end=time(NULL)+60;
for(i=0;i<10;++i)
{pthread_create(&id[i],NULL,(void*)reader,(void*)i);
pthread_join(id[i],NULL);
}
}
void *reader(void *arg)
{while(time(NULL)<end)
{ sem_wait(&empty);
pthread_mutex_lock(&mutex);
curr=0;
count++;
j=1;
while(curr==0&&j<6){
if(chair[j]==-1){
curr=j;
}
j++;
}
position[curr]=1;
k=arg;
chair[k]=curr;
printf("Reader%d entered and sat at %dth chair.NOW the total number is %d.\n",arg,curr,count);
pthread_mutex_unlock(&mutex);
sleep(1);
pthread_mutex_lock(&mutex);
count--;
k=arg;
position[chair[k]]=-1;
pthread_mutex_unlock(&mutex);
sem_post(&empty);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -