是否有線程安全類成員變量的C++語言功能?快速搜索或兩個都沒有透露,但我認爲這很簡單,並提出了這個解決方案。是否有線程安全類變量的C++標準?
template <class T>
class ThreadSafeVar
{
private:
T safeVar;
std::mutex accessMutex;
public:
ThreadSafeVar(T initialValue) { safeVar = initialValue; }
ThreadSafeVar<T>& operator=(const T &source) { set(source); return *this; }
ThreadSafeVar<T>& operator=(ThreadSafeVar<T> &source) { set(source.get()); return *this; };
void set(T newValue)
{
std::lock_guard<std::mutex> lock(accessMutex);
safeVar = newValue;
};
T const get(void)
{
std::lock_guard<std::mutex> lock(accessMutex);
return safeVar;
};
};
此解決方案是否有任何問題(可能的死鎖等)? C++是否已經有了這樣的方法?
對於TriviallyCopyable類型,std :: atomic提供了set,get和exchange方法。 –