我想知道如果我需要多线程安全类,这是一个很好的设计。
1)设计方法作为普通的非线程安全类会有它们,如果不修改成员,请注意用const标记方法。 Ofc用一粒盐,例如concurant vector cant有pop_back(),只有try_pop()......
2)在类中添加可变互斥锁,并在每个方法开始时使用lock_guard锁定它(如果它是非递归的,请注意不要对互斥锁进行双重锁定)
示例:
size_t MyClass::getSize() const
{
lock_guard<mutex> lg(mtx); //mtx is mutable
return cont.size();
}