Question
The goal of this assignment is to write a multithreaded program that explores synchronization challenge. For this part, assume that, we have a shared variable
The goal of this assignment is to write a multithreaded program that explores synchronization challenge. For this part, assume that, we have a shared variable NextID. This is initialized to 1 at the beginning.
Now create 5 threads in your program and assign ID 1,2,3,4,5 to them respectively. You can pass the ID as a parameter when you create the threads.
Each of the threads will try to access the variable NextID.
Whenever a thread acquires the variable, it checks whether the NextId is equal to its own Id or not.
If it is not equal, it will output Not My Turn!, then print its threadId, and then release the variable.
If it is equal, the thread will print My turn!, then print its threadId, increase the NextId by 1, and then release the variable. However, after increasing NextID by 1, the thread will check if the value is 6 or not. If it is 6, it will reset it to 1 before releasing the variable.
The program should execute until each thread prints Mu Turn! 20 times. Once a thread prints for 20 times, it terminates.
Count the number of times each thread prints Not my Turn! and include that in the report.
Code should be in C
Step 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