Junior — Middle
139
Wat zijn de verschillende methoden om synchronisatie van processen of threads te waarborgen?
Bedrijven waar gevraagd werd
ГК Промэкспертиза
Antwoord van AI
sobes.tech AI
Для синхронизации процессов или потоков в C/C++ применяются различные методы и механизмы:
- Мьютексы (mutex) — обеспечивают взаимное исключение, чтобы только один поток мог выполнять критическую секцию.
- Семафоры — позволяют ограничить количество потоков, одновременно выполняющих определённый участок кода.
- Условные переменные (condition variables) — позволяют потокам ждать наступления определённого события.
- Барьеры (barriers) — синхронизируют группу потоков, заставляя их ждать друг друга.
- Атомарные операции — операции, которые выполняются без прерывания, используются для простых синхронизаций.
Пример использования мьютекса на C++11:
#include <mutex>
std::mutex mtx;
void critical_section() {
mtx.lock();
// код, который должен выполняться одним потоком
mtx.unlock();
}
Или с RAII:
void critical_section() {
std::lock_guard<std::mutex> lock(mtx);
// безопасный доступ к общим ресурсам
}