我所經歷的一些問題,我的原子容器,看見this link。C++ 11的std線程安全::原子<T>拷貝構造函數
是有一個原因的std ::原子不復制施工的?解決方案似乎是this他們只是通過T
值與原子加載函數的非原子構造函數(如果我沒有弄錯)。
所以一般來說,這是拷貝構造線程安全的?
template<typename T>
struct MobileAtomic
{
std::atomic<T> atomic;
explicit MobileAtomic(std::atomic<T> const& a) : atomic(a.load()) {}
};
目前還不清楚這個代碼是否能夠實現任何明智的。 Atomics服務於一個非常特定的目的,通常複製它們是沒有意義的。 –
作爲一個比喻:一個原子int比一個整數更接近互斥或信號量。您可能想要查詢信號量的當前狀態(對應於原子加載),但複製信號量本身沒有意義。這是一個同步機制,如果不合理,則複製一份。 –
我也不清楚這對於「構造函數是線程安全的」意味着什麼。誰在共同構建什麼? –