2016-08-02 13 views
2

私はthis質問で説明しているものと同様のものを試してみました:GCC <= 4.9のstd :: atomic_store(shared_ptr)の代わりに?

// 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がオプションの場合は、STLの代わりにboost::shared_ptrboost::atomic_storeを使用することももちろん可能です。それは同じインターフェースを持っているため、簡単に交換できます。

関連する問題