Question: Part 3: Strict Alternation (10 points) A file named pthread-data-sharing-mutex-strict-alternation.cpp has been provided to you in the same project. Compile the program and make sure

Part 3: Strict Alternation (10 points)

A file named pthread-data-sharing-mutex-strict-alternation.cpp has been provided to you in the same project.

Compile the program and make sure that it executes.

Examine the program code. Note that except for some minor changes, this program is identical to the one you used in Part 2 of this assignment.

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

#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!