是否为类互斥使用mutable,以便可以将方法声明为const良好的设计?

时间:2013-04-11 09:31:40

标签: c++ c++11

我想知道如果我需要多线程安全类,这是一个很好的设计。

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();

}

0 个答案:

没有答案