【发布时间】:2013-10-08 04:29:10
【问题描述】:
假设有一个用户定义的类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 的操作来实现吗?
【问题讨论】:
-
你不太可能需要原子,它们甚至可能更慢,最好用互斥锁来保护类的数据。
-
你当然可以添加 myClass::increment() 方法。
标签: c++ multithreading locking lock-free