project 1 C++ if you can do it contact me read the attachment
Use Word to process your homework and submit to Blackboard is mandatory. Source code and screenshot are required.
1. Objectives
· Understand the race condition
· Know the multithreading programming
· Understand how to use mutex to solve the race condition
2. Run the following code and explain what the code does
· Run this code at least twice and take screenshots
· Explain what the code does
· What is the running result supposed to be
· What caused this issue?
#include <thread>
#include <iostream>
using namespace std;
const unsigned int NTHREADS = 20;
const int ITERS = 10000000;
int counter;
void increment()
{
for (int i = 0; i < ITERS; i++)
counter++;
}
void decrement()
{
for (int i = 0; i<ITERS; i++)
counter--;
}
int main()
{
cout << "The counter is " << counter << endl;
thread *threads = new thread[NTHREADS];
for (unsigned int i = 0; i<NTHREADS; i++)
if (i % 2 == 0)
threads[i] = thread(increment);
else
threads[i] = thread(decrement);
for (unsigned int i = 0; i<NTHREADS; i++)
threads[i].join();
cout << "The counter is " << counter << endl;
return 0;
}
3. Mutex
A mutex (mutual exlusion) allows us to encapsulate blocks of code that should only be executed in one thread at a time.
Apply mutex to solve the issue in previous code. Show your revised code and running result.