2016-08-02 68 views
2

我试了一下在this问题描述类似的东西:替代std :: atomic_store(shared_ptr)为GCC <= 4.9?

// 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

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

相关问题