代码如下:
#include<stdio.h>
#include<pthread.h>
#include<semaphore.h>
#define N 5
sem_t chopsticks[N];
sem_t r;
int philosophers[N] = {0,1,2,3,4};
pthread_mutex_t mutex[N];
void *philosophe1(void *arg)
{
int i = *(int *)arg;
int left = i;
int right = (i+1)%N;
while(1)
{
printf("哲学家%d正在思考问题\n",i);
sleep(1);
printf("哲学家%d饿了\n",i);
if(i % 2 == 0)
{
sem_wait(&chopsticks[right]);
printf("哲学家%d拿起了%d号筷子,现在只有一支筷子,不能进餐\n",i,right);
sem_wait(&chopsticks[left]);
printf("哲学家%d拿起了%d号筷子, 现在有两支筷子,开始进餐\n", i, left);
sleep(3);
sem_post(&chopsticks[left]);
printf("哲学家%d放下了%d号筷子\n", i, left);
sem_post(&chopsticks[right]);
printf("哲学家%d放下了%d号筷子\n", i, right);
}
else
{
s