2016-08-02 69 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。它具有相同的界面,因此很容易更換。

相關問題