2013-12-07 5 views
1

WinAPI предоставляет нам функцию WaitForMultipleObjects (..). Предположим, что нам нужно ждать всех мьютексов в массиве, тогда было бы здорово иметь функцию, которая выводит захваченные мьютексы из массива за один вызов. Что заставило Microsoft не предоставлять нам такую ​​полезную вещь? Какое решение лучше всего выпускать мьютексы после WaitForMultipleObjects (..), если их достаточно много?Как разблокировать несколько мьютексов за один вызов

+6

Вам не нужно выделять их атомарно, поэтому нет необходимости в такой функции. И блокировка множества мьютексов одновременно очень необычна; тупик ждет. –

+0

@AlanStokers Спасибо! Допустим, у нас есть 5 мьютексов, захваченных WaitForMultipleObjects (..), выпуская их по одному, будет немного беспорядочно. – Ivars

+1

@ user2543574 Тривиально написать функцию, которая принимает значение count и 'HANDLE *' (а скорее 'WaitForMultipleObjects') и освобождает их в цикле. – syam

ответ

4

Raymond Chen of Microsoft, возможно, не написал о вашей точной теме, но он написал о других подобных. И, как он говорит, «Каждая функция начинается с -100 очков». Нет необходимости в требуемой функции; код для его реализации слишком короткий, слишком маловероятно, что он будет использоваться в очень многих местах и ​​не будет лучше в библиотеке, чем в приложении.

Люди уже жалуются, что Win32 API раздувается. Будьте счастливы, что они этого не добавили.