假設有一個用戶定義的類MyClass
,它具有setter和getter函數。C++(CAS-like)同步用戶定義類型的getter和setter
class MyClass {
int m_value;
public:
void set(int value)
{ m_value = value; }
int get() const
{ return m_value;}
};
而且還有一個功能increment()
能夠由1增加對象的值,其可以在多個線程中被調用。
void increment(MyClass& myClass)
{
myClass.set(myClass.get() + 1);
}
什麼是使這個函數線程安全的最好方法是什麼?通過只使用鎖?有沒有辦法通過使用一些CAS類操作來實現它?
這是不可能的,你需要原子能,他們甚至可能會比較慢,最好只保護類的數據與互斥。 – goji
你當然可以添加myClass :: increment()方法。 –