Back to questions
Junior — Middle
84
Какие основные средства для обеспечения синхронизации ресурсов предоставляет стандартная библиотека?
Companies where asked
ГК Адепт
Answer from AI
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;
}
Эти средства позволяют безопасно синхронизировать доступ к общим данным между потоками.