Question: ##include #include using namespace std; int sum; const int num _ threads = 4 ; void foo ( int val ) { for ( int

##include
#include
using namespace std;
int sum;
const int num_threads =4;
void foo(int val){
for (int i =0; i <5; i++){
sum = sum + val;
}
}
void bar_1(){
thread t[num_threads];
for (int i =0; i < num_threads; i++){
t[i]= std::thread(foo, i +1);
t[i].join();
}
cout << "Sum is "<< sum << endl;
}
void bar_2(){
thread t[num_threads];
for (int i =0; i < num_threads; i++){
t[i]= std::thread(foo, i +1);
}
cout << "Sum is "<< sum << endl;
for (int i =0; i < num_threads; i++){
t[i].join();
}
}
void bar_3(){
thread t[num_threads];
for (int i =0; i < num_threads; i++){
t[i]= std::thread(foo, i +1);
}
for (int i =0; i < num_threads; i++){
t[i].join();
}
cout << "Sum is "<< sum << endl;
}
int main(){
sum =0;
bar_1();
sum =0;
bar_2();
sum =0;
bar_3();
return 0;
} a) The code on the left outputs three values for sum (via the cout statements in the bar_1, bar_2, and bar_3 functions). sum is a global variable and see that its value is set to 0 before each call of bar functions. What is the maximum possible value one can see on the screen? (Hint: The maximum is the same for all outputs)._____________ b)(10 pts) What is the minimum possible value for each output? (Hint: The minimum values are different for different bar function calls). bar_1: Sum is (Min)________ bar_2: Sum is (Min)________ bar_3: Sum is (Min)________

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!