Back to questions
СБЕР
МТС
Junior — Middle
82
Какие основные механизмы для управления синхронностью потоков тебе знакомы?
Companies where asked
Answer from AI
sobes.tech AI
Основные механизмы управления синхронностью потоков в C/C++ включают:
- Мьютексы (mutex) — обеспечивают взаимное исключение, предотвращая одновременный доступ к общим ресурсам.
- Семафоры (semaphore) — позволяют ограничить количество потоков, одновременно работающих с ресурсом.
- Условные переменные (condition variables) — позволяют потокам ждать наступления определённого события.
- Атомарные операции (atomic) — обеспечивают безопасное выполнение операций без блокировок.
- Барьер (barrier) — синхронизирует несколько потоков, заставляя их ждать друг друга.
Пример использования мьютекса в C++11:
#include <mutex>
#include <thread>
#include <iostream>
std::mutex mtx;
int counter = 0;
void increment() {
std::lock_guard<std::mutex> lock(mtx);
++counter;
std::cout << "Counter: " << counter << std::endl;
}
int main() {
std::thread t1(increment);
std::thread t2(increment);
t1.join();
t2.join();
return 0;
}
Этот код защищает доступ к переменной counter от одновременного изменения несколькими потоками.