Предположим, что существует определенный пользователем класс MyClass
, у которого есть сеттер и функция геттера.Синхронизация C++ (CAS-like) на геттере и сеттер пользовательских типов
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?
Это маловероятно, что вам нужно Atomics, и они могут быть даже медленнее, лучше всего защитить данные класса с помощью мьютекса. – goji
Вы можете, конечно, добавить метод myClass :: increment(). –