GCC <= 4.9 的 std::atomic_store(shared_ptr) 替代方案?
alternative to std::atomic_store(shared_ptr) for GCC <= 4.9?
我尝试了类似 this 问题中描述的方法:
// create copy
auto new_data(std::make_shared<some_class>(*this->data));
... // modify *new_data
// apply new data
std::atomic_store(&this->data, new_data);
.. 后来我意识到在其他安装了 gcc 4.8 的机器上它不会工作(就像在同一个问题中描述的那样)。
是否有解决方法 - 例如(暂时)从 std::shared_ptr
派生提供所需的接口或仅使用另一个原子操作?
或者当我在全局指针中存储一个新对象时,我有提供外部互斥锁来保护读取访问吗?
如果可以选择 Boost,当然可以只使用 boost::shared_ptr
和 boost::atomic_store
而不是 STL。接口相同,更换方便。
我尝试了类似 this 问题中描述的方法:
// create copy
auto new_data(std::make_shared<some_class>(*this->data));
... // modify *new_data
// apply new data
std::atomic_store(&this->data, new_data);
.. 后来我意识到在其他安装了 gcc 4.8 的机器上它不会工作(就像在同一个问题中描述的那样)。
是否有解决方法 - 例如(暂时)从 std::shared_ptr
派生提供所需的接口或仅使用另一个原子操作?
或者当我在全局指针中存储一个新对象时,我有提供外部互斥锁来保护读取访问吗?
如果可以选择 Boost,当然可以只使用 boost::shared_ptr
和 boost::atomic_store
而不是 STL。接口相同,更换方便。