Sobes.tech
Назад к вопросам
Junior — Middle
85

Какие основные средства для обеспечения синхронизации ресурсов предоставляет стандартная библиотека?

Компании, где спрашивали
ГК Адепт

Ответ от нейросети

sobes.tech AI

Стандартная библиотека C++ предоставляет несколько основных средств для синхронизации ресурсов в многопоточной среде:

  • std::mutex — базовый мьютекс для взаимного исключения доступа к ресурсу.
  • std::recursive_mutex — мьютекс, который может быть захвачен одним и тем же потоком несколько раз.
  • std::timed_mutex и std::recursive_timed_mutex — мьютексы с возможностью попытки захвата с таймаутом.
  • std::lock_guard — RAII-обёртка для автоматического захвата и освобождения мьютекса.
  • std::unique_lock — более гибкая обёртка, позволяющая отложить захват, освобождать мьютекс вручную и использовать с condition_variable.
  • std::condition_variable — условная переменная для организации ожидания и уведомления между потоками.

Пример использования std::mutex и std::lock_guard:

#include <mutex>
#include <iostream>

std::mutex mtx;
int counter = 0;

void increment() {
    std::lock_guard<std::mutex> lock(mtx);
    ++counter;
    std::cout << "Counter: " << counter << std::endl;
}

Эти средства позволяют безопасно синхронизировать доступ к общим данным между потоками.