Если у вас есть 4 se parate, независимые ресурсы, и не имеет значения, что они содержат в отношении друг к другу, вы, вероятно, захотите защитить их отдельно и независимо.
Однако, если эти 4 вектора вместе представляют собой единый логический ресурс, и они должны всегда обновляться атомарно и оставаться действительными по отношению друг к другу, вы захотите защитить их как группу.
Или это хорошая идея иметь 4 критических раздела по одному для каждого ресурса? Если я использую один критический раздел для всех ресурсов, я вижу тупик .
Как уже упоминалось в других ответах, это произойдет, если вы потоки блокировки более одного ресурса в то время и не всегда захватывая их в же порядке.
Имейте в виду, что если нити всегда необходимо заблокировать все четыре вектора для работы с ними, вы не хотите защищать их отдельно, а как одну группу.
Как правило, хороший дизайн имеет один критический раздел для одного ресурса или у нас есть один критический раздел в классе?
Это снова зависит от того, представляет ли каждый вектор полностью независимый ресурс, или все 4 вектора, как группа, являются одним логическим ресурсом. Тот факт, что вы положили их в класс вместе, кажется, указывает на последнее.Если это так, вы должны иметь единый замок, защищающий все их как группу.
Один nitpick. Критический раздел не для ресурса - критический раздел - это ДОСТУП к этому ресурсу. – polkadotcadaver