Critical Section
The critical section is a section of code within a process that requires access to shared resources and has to be executed as an Atomic Operation. It must not be executed by more than one thread at a time to prevent data corruption.
Example
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // Mutex for critical section
void printNumbers() {
mtx.lock(); // Entering critical section
for(int i = 0; i < 5; ++i) {
std::cout << i << " ";
}
std::cout << std::endl;
mtx.unlock(); // Exiting critical section
}
int main() {
std::thread t1(printNumbers);
std::thread t2(printNumbers);
t1.join();
t2.join();
return 0;
}