Barrier
предлагает более высокий уровень абстракции и удобства: один вызов SignalAndWait
- это все, что нужно каждому потоку, вместо того, чтобы знать, какой дескриптор в массиве должен сигнализировать (или использовать мьютекс для поиска и увеличьте «следующую доступную точку в массиве» и сообщите, что), и необходимо сначала подать сигнал, а затем WaitAll
.
В конце, конечно, вы можете выполнить ту же задачу синхронизации путем соответствующего использования других механизмов синхронизации, но для такого распространенного шаблона использования, как воплощение Barrier
, удобно иметь такое удобное и надежное решение, которое уже есть и аккуратно упакованы; -).