Std::shared_ptr потокобезопасностьC++

Программы на C++. Форум разработчиков
Anonymous
Std::shared_ptr потокобезопасность

Сообщение Anonymous »

Я читал, что

"Несколько потоков могут одновременно читать и записывать разные
shared_ptr объекты, даже если эти объекты являются копиями, имеющими общее
владение". (MSDN: Потокобезопасность в стандартной библиотеке C++)

Означает ли это, что изменение объекта Shared_ptr безопасно?

Например, считается ли безопасным следующий код:

Код: Выделить всё

shared_ptr global = make_shared();
...

//In thread 1
shared_ptr local = global;
...

//In thread 2
global = make_shared();
...
Могу ли я быть уверен в этом случае, что локальный поток 1 будет иметь исходное значение global или новое значение, назначенное потоком 2, но в любом случае у него будет действительный общий_ptr для myClass?
Просто чтобы объяснить мою мотивацию. Я хочу иметь общий указатель для хранения моей конфигурации и пул потоков для обработки запросов.

поэтому глобальная — это глобальная конфигурация.

Код: Выделить всё

thread 1
принимает текущую конфигурацию при начале обработки запроса.

Код: Выделить всё

thread 2
обновляет конфигурацию. (применяется только к будущим запросам)
Если это сработает, я смогу обновить конфигурацию таким образом, не нарушая ее в середине обработки запроса.

Подробнее здесь: https://stackoverflow.com/questions/144 ... ead-safety

Вернуться в «C++»