Back to questions
Junior — Middle
81
Можешь привести примеры ресурсов, управляемых с помощью RAII, кроме умных указателей?
Companies where asked
ГК Адепт
Answer from AI
sobes.tech AI
RAII (Resource Acquisition Is Initialization) — это идиома в C++, которая связывает время жизни ресурса с временем жизни объекта.
Кроме умных указателей, RAII часто применяется для управления:
- Файловыми дескрипторами: класс открывает файл в конструкторе и закрывает в деструкторе.
- Мьютексами и блокировками: объект блокирует ресурс при создании и разблокирует при уничтожении, например,
std::lock_guard. - Сетевыми соединениями: открытие соединения в конструкторе и закрытие в деструкторе.
- Памятью, выделенной вручную: обертки для динамического выделения и освобождения памяти.
Пример с блокировкой мьютекса:
std::mutex mtx;
void func() {
std::lock_guard<std::mutex> lock(mtx); // блокирует мьютекс
// критическая секция
} // при выходе из функции lock_guard уничтожается и мьютекс разблокируется
Такой подход гарантирует освобождение ресурса даже при исключениях.