相关疑难解决方法(0)

std :: shared_ptr线程安全

我读过这个

"多个线程可以同时读写不同的shared_ptr对象,即使这些对象是共享所有权的副本." (MSDN:标准C++库中的线程安全性)

这是否意味着更改shared_ptr对象是安全的?
例如,下一个代码是安全的:

shared_ptr<myClass> global = make_shared<myClass>();
...

//In thread 1
shared_ptr<myClass> private = global;
...

//In thread 2
global = make_shared<myClass>();
...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以确定线程1 private将具有global线程2分配的原始值或新值,但无论哪种方式,它将具有对myClass的有效shared_ptr?

==编辑==
只是为了解释我的动机.我想有一个共享指针来保存我的配置,我有一个线程池来处理请求.全局配置也是
如此global.
thread 1在开始处理请求时采用当前配置.
thread 2正在更新配置.(仅适用于未来的请求)

如果它工作,我可以更新配置,而不会在请求处理过程中中断它.

c++ std shared-ptr

43
推荐指数
3
解决办法
4万
查看次数

标签 统计

c++ ×1

shared-ptr ×1

std ×1