Разница между функциями WaitForSingleObject и WaitForMultipleObjects при работе с мьютексами заключается в том, что WaitForSingleObject ожидает одного объекта, а WaitForMultipleObjects — нескольких. 14
WaitForSingleObject имеет два аргумента: хэндл какого-либо объекта синхронизации и тайм-аут ожидания, то есть максимальное время ожидания (в миллисекундах). 1 Если в момент её вызова указанный объект находится в несигнальном состоянии, то вызвавшая нить переводится в состояние ожидания. 1
WaitForMultipleObjects вместо единственного хэндла принимает в качестве аргументов адрес массива, содержащего несколько хэндлов, и количество этих хэндлов (размер массива). 1 Дополнительный, четвёртый аргумент — булевский флаг режима ожидания. 1 Значение FALSE означает ожидание любого объекта (достаточно, чтобы хоть один из них перешёл в сигнальное состояние), TRUE — ожидание всех объектов (ожидание завершится, только когда все объекты окажутся в сигнальном состоянии). 1