Sobes.tech
Назад к вопросам
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 безопасно передаётся между потоками, и объект будет уничтожен только после того, как все ссылки будут уничтожены.