对于GCC< = 4.9,替代std :: atomic_store(shared_ptr)?

时间:2016-08-02 12:31:37

标签: c++ gcc shared-ptr atomic

我尝试了类似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提供所需的接口或仅使用其他原子操作?

或者当我在全局指针中存储新对象时, 提供外部互斥锁以保护读取权限?

1 个答案:

答案 0 :(得分:1)

如果Boost是一个选项,一个选项当然只是使用boost::shared_ptrboost::atomic_store而不是STL。它具有相同的界面,因此很容易更换。