Я читал, что
"Несколько потоков могут одновременно читать и писать разные shared_ptr, даже если объекты являются копиями, которые разделяют ( MSDN: безопасность потоков в стандартной библиотеке С++)
Означает ли это, что изменение объекта shared_ptr безопасно?
Для экземпляра следующий код считается безопасным:
shared_ptr<myClass> global = make_shared<myClass>();
...
//In thread 1
shared_ptr<myClass> private = global;
...
//In thread 2
global = make_shared<myClass>();
...
Могу ли я быть уверенным, что в этом случае поток 1 private
будет иметь исходное значение global
или новое значение, которое назначен нить 2, но в любом случае он будет иметь действительный shared_ptr для myClass?
== EDIT ==
Просто объясню свою мотивацию. Я хочу иметь общий указатель для хранения моей конфигурации, и у меня есть пул потоков для обработки запросов.
поэтому global
- глобальная конфигурация. thread 1
принимает текущую конфигурацию, когда она начинает обрабатывать запрос. thread 2
обновляет конфигурацию. (применимы только к будущим запросам)
Если он работает, я могу обновить конфигурацию таким образом, не разбивая его в середине обработки запроса.