2016-08-02 9 views
2

habe ich versucht, etwas ähnliches, was in this Frage beschrieben ist:Alternative zu std :: atomic_store (shared_ptr) für 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); 

.. und später erkannte ich, dass auf einem anderen Rechner mit gcc 4.8 installiert es nicht funktionieren würde (wie in der gleichen Frage beschrieben).

Gibt es einen Workaround - wie (temporär) von std::shared_ptr ableitend, die die benötigte Schnittstelle zur Verfügung stellt oder einfach eine andere atomare Operation benutzt?

Oder Ich habe eine externe Mutex, um den Lesezugriff, wenn ich Speicher ein neues Objekt im globalen Zeiger zu schützen?

Antwort

1

Eine Option ist natürlich, einfach boost::shared_ptr und boost::atomic_store anstelle von STL zu verwenden, wenn Boost eine Option ist. Es hat die gleiche Schnittstelle und ist daher leicht zu ersetzen.

Verwandte Themen