Я видел некоторую ненависть ppl на recursive_mutex (не для С++ 11):
http://www.zaval.org/resources/library/butenhof1.html
но, думая о том, как реализовать класс, который является потокобезопасным (защищенный mutex), мне мучительно доказывает, что каждый метод, который должен быть защищен мьютексом, защищен mutex и что мьютекс заблокирован не более одного раза.
Итак, для дизайна OO должен std::recursive_mutex
быть по умолчанию и std::mutex
рассматриваться как оптимизация производительности в общем случае, если он не используется только в одном месте (для защиты только одного ресурса)?
РЕДАКТИРОВАТЬ: сделать все ясно. Я говорю об одном частном нестатических мьютексах. Поэтому каждый экземпляр класса имеет только один мьютекс.
EDIT2: чтобы все было ясно, я предлагаю щедрость для этого не потому, что чувствую, что текущий А плох, но потому что idk, если они хороши. Ака они кажутся слишком "ИМХО это".
И чтобы понять, о чем я говорю:
один мьютекс за один раз,
в начале каждого публичного метода
{
std::scoped_lock<std::recursive_mutex> sl;