Objective: In completion of this program, you will understand one of the three requirements for solving a critical section problem. This requirement is Progress. Progress is when if no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the processes that will enter the critical section next cannot be postponed indefinitely. The program will show how multiple processes can handle the same shared variables without conflicting with each other. Write a C/C++ program implementing two Critical Sections. In order to accomplish this, you will create three processes. These 3 processes will execute 2 functions, each with a critical section. You will need to print out the Process ID of the process in control of each critical section. Function 1 will: Within the critical section, iterate a counter from 1 to 10, printing out the value of each counter for each iteration on the same line separated by a space. Outside the critical section, sleep for one second. This can be done with the code std::this_thread::sleep_for (std::chrono:: seconds (1)); Function 2 will: Within the critical section, spell out the letters of the alphabet, printing out each letter on the same line separated by a space. (This can be done with a for loop) Outside the critical section, sleep for one second. This can be done with the code std::this thread::sleep_for (std::chrono: :seconds (1)); To create a critical section, you will need to lock and unlock the code with a mutex (std::mutex). In the main function, wait for each process to complete and print out that the process has completed. To run this CPP program on Unix or Linux, type: g++ -pthread -std=C++11 progl.cpp Sample Output NOTE: You will notice that since each process sleeps after completing a function, the next process will begin to execute and grab hold of the critical section. Process 1001 counting to 10 1 2 3 4 5 6 7 8 9 10 Process 1002 counting to 10 1 2 3 4 5 6 7 8 9 10 Process 1003 counting to 10 1 2 3 4 5 6 7 8 9 10 Process 1001 spelling the alphabet ABCDEFGHIJKLMNOPQR S T U V W X Y Z Process 1002 spelling the alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ Process 1003 spelling the alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ --Process P1 Completed--- --Process P2 Completed --- ---Process P3 Completed