Question: Modify the program to implement the strict alternation solution to achieve mutual exclusion ( refer back to the relevant prep work video/slides if you need

Modify the program to implement the strict alternation solution to achieve mutual exclusion (refer back to the relevant prep work video/slides if you need to).

Build and execute the updated program several times. Expected Output: Your program should produce the following output

Code:

#include

#include

int count;

int turn = 0; // Shared variable used to implement strict alternation

void* myFunction(void* arg)

{

int actual_arg = *((int*) arg);

for(unsigned int i = 0; i

// TODO:

// Make sure that the thread waits for its turn

// before it enters the critical region.

//

// HINT: The thread ID is stored in actual_arg

// Beginning of the critical region

count++;

std::cout

// End of the critical region

// TODO:

// Make sure that the other thread gets a turn

//

// HINT: There are only two threads: 0 and 1

// You can use the C++ NOT operator (!)

// to toggle back and forth.

}

pthread_exit(NULL);

}

// HINT: It is not necessary to make any changes in main()

int main()

{

int rc[2];

pthread_t ids[2];

int args[2];

count = 0;

for(unsigned int i = 0; i

args[i] = i;

rc[i] = pthread_create(&ids[i], NULL, myFunction, (void*) &args[i]);

}

for(unsigned int i = 0; i

pthread_join(ids[i], NULL);

}

std::cout

pthread_exit(NULL);

}

Thread #0 count = 1 Thread #1 count = 2 Thread #0 count = 3 Thread #1 count = 4 Thread #0 count = 5 Thread #1 count = 6 Thread #0 count = 7 Thread #1 count = 8 Thread #0 count = 9 Thread #1 count = 10 Thread #0 count = 11 Thread #1 count = 12 Thread #0 count = 13 Thread #1 count = 14 Thread #0 count = 15 Thread #1 count = 16 Thread #0 count = 17 Thread #1 count = 18 Thread #0 count = 19 Thread #1 count = 20 Final count 20

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!