Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Implement the Dining Philosophers model in Figure 6.12 with semaphores; however, make use of sem_trywait or sem_timedwait in a measure to avoid starvation and deadlocks.
Implement the Dining Philosophers model in Figure 6.12 with semaphores; however, make use of sem_trywait or sem_timedwait in a measure to avoid starvation and deadlocks. Have the main program kill the threads after no more than five minutes. The eat function should cause a line to output indicating which philosopher is eating and when. Both of the function think and eat should use a random sleep duration to keep the philosophers unpredictable.
/program semaphore fork [51-1 int i; void philosopher (int i) diningphilosophers / while (true) think) wait (fork[i]) wait (fork [ (i+1) mod 5]) eat(); signal(fork [ (i+1) mod 5 ]) signal(fork[i]); void main() parbegin (philosopher (0), philosopher (1), philosopher philosopher (3), philosopher (4)) Figure 6.12 A First Solution to the Dining PhilosophersStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started