Question
A file named pthread-data-sharing-mutex-os-call.cpp has been provided to you in the same project. Compile the program and execute it several times, at least 10. Make
-
A file named pthread-data-sharing-mutex-os-call.cpp has been provided to you in the same project.
-
Compile the program and execute it several times, at least 10. Make sure to pay close attention to the output that the program produces.
-
Answer the following questions about the programs behavior:
-
What does this program do?
-
What output does it produce?
-
Examine the program code carefully. Is the program functioning correctly? What is wrong with it?
-
-
#include
#define TOTAL_THREADS 4
int count; pthread_mutex_t the_mutex; // phread mutex variable - initialize here if using the initializer macro
void* myFunction(void* arg) { int actual_arg = *((int*) arg); for(unsigned int i = 0; i < 10; ++i) { // TODO: // Use a Pthread mutex to control // access to the critical region.
// Beginning of the critical region count++; std::cout << "Thread #" << actual_arg << " count = " << count << std::endl;
// End of the critical region // TODO: // Relinquish access to the Pthread mutex // since critical region is complete.
// Random wait - This code is just to ensure that the threads // show data sharing problems int max = rand() % 100000; for (int x = 0; x < max; x++); // End of random wait code } pthread_exit(NULL); }
int main() { int rc[TOTAL_THREADS]; pthread_t ids[TOTAL_THREADS]; int args[TOTAL_THREADS]; // TODO: Initialize the pthread mutex here if using the initialization function. count = 0; for(unsigned int i = 0; i < TOTAL_THREADS; ++i) { args[i] = i; rc[i] = pthread_create(&ids[i], NULL, myFunction, (void*) &args[i]); } for(unsigned int i = 0; i < TOTAL_THREADS; ++i) { pthread_join(ids[i], NULL); } std::cout << "Final count = " << count << std::endl; pthread_exit(NULL); }
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