Hello! I am having issues undertanding the code in the picture. I am mosly interested on an explantion on how strict alternation is implemented in the while loop followed by the if else. I am sending here all the code but I just need help for what is the inside of myFunction at the begining (see image). Thank you!  #include #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 < 10; ++i) { while (turn != actual_arg); // Beginning of the critical region count++; std::cout << "Thread #" << actual_arg << " count = " << count << std::endl; //End of the critical region if (actual_arg == 0) { turn = 1; } else { turn = 0; } } // 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); } // 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 < 2; ++i) { args[i] = i; rc[i] = pthread_create(&ids[i], NULL, myFunction, (void*) &args[i]); } for(unsigned int i = 0; i < 2; ++i) { pthread_join(ids[i], NULL); } std::cout << "Final count = " << count << std::endl; pthread_exit(NULL); }

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question
Hello!
I am having issues undertanding the code in the picture. I am mosly interested on an explantion on how strict alternation is implemented in the while loop followed by the if else. I am sending here all the code but I just need help for what is the inside of myFunction at the begining (see image). Thank you! 
#include <iostream>
#include <pthread.h>
#include <stdlib.h>


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 < 10; ++i) {
while (turn != actual_arg);
// Beginning of the critical region
count++;
std::cout << "Thread #" << actual_arg << " count = " << count << std::endl;
//End of the critical region
if (actual_arg == 0) {
turn = 1;
} else {
turn = 0;
}
}
// 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);
}


// 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 < 2; ++i) {
args[i] = i;
rc[i] = pthread_create(&ids[i], NULL, myFunction, (void*) &args[i]);
}

for(unsigned int i = 0; i < 2; ++i) {
pthread_join(ids[i], NULL);
}

std::cout << "Final count = " << count << std::endl;
pthread_exit(NULL);
}
void* myFunction(void* arg) {
int actual_arg = *((int *) arg);
for (unsigned int i = 0; i < 10; ++i) {
while (turn != actual_arg);
}
// Beginning of the critical region
count++;
std::cout << "Thread #" << actual_arg << " count =
//End of the critical region
if (actual_arg == 0) {
turn = 1;
} else {
}
turn = 8;
<< count << std::endl;
Transcribed Image Text:void* myFunction(void* arg) { int actual_arg = *((int *) arg); for (unsigned int i = 0; i < 10; ++i) { while (turn != actual_arg); } // Beginning of the critical region count++; std::cout << "Thread #" << actual_arg << " count = //End of the critical region if (actual_arg == 0) { turn = 1; } else { } turn = 8; << count << std::endl;
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Basics of loop
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education