Назад к вопросам
Junior — Middle
84
Какой тип умного указателя применяешь для обеспечения безопасности при работе с многопоточными операциями?
Компании, где спрашивали
РозумСофт
Ответ от нейросети
sobes.tech AI
Для обеспечения безопасности при работе с многопоточными операциями в C++ часто используют умный указатель std::shared_ptr. Он реализует подсчёт ссылок с атомарными операциями, что позволяет безопасно разделять владение объектом между потоками. В отличие от std::unique_ptr, который не потокобезопасен при копировании, std::shared_ptr гарантирует корректное управление временем жизни объекта в многопоточной среде.
Пример использования std::shared_ptr в многопоточном контексте:
#include <iostream>
#include <memory>
#include <thread>
void threadFunc(std::shared_ptr<int> ptr) {
std::cout << "Value: " << *ptr << std::endl;
}
int main() {
auto sp = std::make_shared<int>(42);
std::thread t1(threadFunc, sp);
std::thread t2(threadFunc, sp);
t1.join();
t2.join();
return 0;
}
Здесь std::shared_ptr безопасно передаётся между потоками, и объект будет уничтожен только после того, как все ссылки будут уничтожены.