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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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