Experiment No 11
Experiment No 11
while (1) {
printf("Philosopher %d is thinking\n", id);
sleep(1);
// Pick up forks
sem_wait(&mutex); // Prevent deadlock
sem_wait(&forks[id]); // Pick left fork
sem_wait(&forks[(id + 1) % N]); // Pick right fork
sem_post(&mutex);
int main() {
pthread_t philosophers[N];
int ids[N];
sem_init(&mutex, 0, 1);
for (int i = 0; i < N; i++)
sem_init(&forks[i], 0, 1);
return 0;
}
Output: