Sobes.tech
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 от одновременного изменения несколькими потоками.