假设有一个用户定义的类MyClass
,它有一个 setter 和一个 getter 函数。
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 的操作来实现它?