Junior — Middle
What are the different methods of ensuring synchronization of processes or threads?
sobes.tech AI
Answer from AI
Various methods and mechanisms are used for synchronizing processes or threads in C/C++:
- Mutexes — ensure mutual exclusion so that only one thread can execute a critical section.
- Semaphores — limit the number of threads executing a certain section of code simultaneously.
- Condition variables — allow threads to wait for a specific event to occur.
- Barriers — synchronize a group of threads, making them wait for each other.
- Atomic operations — operations that are performed without interruption, used for simple synchronizations.
Example of using a mutex in C++11:
#include <mutex>
std::mutex mtx;
void critical_section() {
mtx.lock();
// code that should be executed by only one thread
mtx.unlock();
}
Or with RAII:
void critical_section() {
std::lock_guard<std::mutex> lock(mtx);
// safe access to shared resources
}