Question: Complete the missing sections of code and explain the logic as well (if possible). CODE TO USE: semaphore_critical_reason.c #include #include #include #include #include void* protect_critical_region(void*

Complete the missing sections of code and explain the logic as well (if possible).

CODE TO USE: semaphore_critical_reason.c

#include #include #include #include #include

void* protect_critical_region(void* n) { int i = 0, thread_num = (int)(long)n; bool finished = false; sem_t mutex, mutex2, mutex3;

while (!finished) { // TODO: FILL IN THIS LINE for (int j = 0; j

sleep(2);

// TODO: FILL IN THIS LINE for (int j = 0; j 3;

// TODO: FILL IN THIS LINE for (int j = 0; j

#define N_THREADS 3

int main(int argc, const char* argv[]) { pthread_t tid[N_THREADS]; pthread_attr_t attr; pthread_attr_init(&attr); for (int i = 0; i

return 0; }

DESIRED OUTPUT (CAN VARY SLIGHTLY): //======================================================================== CRITICAL(T1) CRITICAL(T0) CRITICAL(T2) out of CRITICAL(T1) into non-critical(T1) CRITICAL(T1) out of CRITICAL(T2) into non-critical(T2) CRITICAL(T2) out of CRITICAL(T0) into non-critical(T0) CRITICAL(T0) out of CRITICAL(T1) out of CRITICAL(T2) out of CRITICAL(T0) into non-critical(T0) into non-critical(T2) CRITICAL(T2) CRITICAL(T0) into non-critical(T1) CRITICAL(T1) out of CRITICAL(T2) into non-critical(T2) CRITICAL(T2) out of CRITICAL(T0) into non-critical(T0) CRITICAL(T0) out of CRITICAL(T1) into non-critical(T1) CRITICAL(T1) out of CRITICAL(T2) out of CRITICAL(T0) into non-critical(T0) CRITICAL(T0) out of CRITICAL(T1) into non-critical(T1) CRITICAL(T1) into non-critical(T2) CRITICAL(T2) out of CRITICAL(T0) into non-critical(T0) out of CRITICAL(T1) into non-critical(T1) out of CRITICAL(T2) into non-critical(T2) all 3 threads joined End of program Program ended with exit code: 0

Screenshot of code: Complete the missing sections of code and explain the logic as well

Output Screenshot:

(if possible). CODE TO USE: semaphore_critical_reason.c #include #include #include #include #include void*

(Global Scope) main(int argc, const char * argv[]) eous Files #include #include #include #include #include avoid* protect_critical_region(void* n) { int i = 0, thread_num = (int)(long)n; bool finished = false; sem_t mutex, mutex2, mutex3; while (!finished) { // TODO: FILL IN THIS LINE for (int j = 0; j 3; ODO: FILL IN THI for (int j = 0; j #include #include #include #include avoid* protect_critical_region(void* n) { int i = 0, thread_num = (int)(long)n; bool finished = false; sem_t mutex, mutex2, mutex3; while (!finished) { // TODO: FILL IN THIS LINE for (int j = 0; j 3; ODO: FILL IN THI for (int j = 0; j

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!