WinAPI предоставляет нам функцию WaitForMultipleObjects (..). Предположим, что нам нужно ждать всех мьютексов в массиве, тогда было бы здорово иметь функцию, которая выводит захваченные мьютексы из массива за один вызов. Что заставило Microsoft не предоставлять нам такую полезную вещь? Какое решение лучше всего выпускать мьютексы после WaitForMultipleObjects (..), если их достаточно много?Как разблокировать несколько мьютексов за один вызов
1
A
ответ
4
Raymond Chen of Microsoft, возможно, не написал о вашей точной теме, но он написал о других подобных. И, как он говорит, «Каждая функция начинается с -100 очков». Нет необходимости в требуемой функции; код для его реализации слишком короткий, слишком маловероятно, что он будет использоваться в очень многих местах и не будет лучше в библиотеке, чем в приложении.
Люди уже жалуются, что Win32 API раздувается. Будьте счастливы, что они этого не добавили.
Вам не нужно выделять их атомарно, поэтому нет необходимости в такой функции. И блокировка множества мьютексов одновременно очень необычна; тупик ждет. –
@AlanStokers Спасибо! Допустим, у нас есть 5 мьютексов, захваченных WaitForMultipleObjects (..), выпуская их по одному, будет немного беспорядочно. – Ivars
@ user2543574 Тривиально написать функцию, которая принимает значение count и 'HANDLE *' (а скорее 'WaitForMultipleObjects') и освобождает их в цикле. – syam