Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Порядок захвата handle несколькими желающими


Автор: EnergoHokum 10.12.2007, 11:22
Если несколько "желающих" ожидают освобождения handle при помощи WaitForSingleObject, то кто из них первым получит доступ? Будет соблюдаться порядок очерёдности (первый вызвавший WaitFoeSingleObject первым и получит доступ), или кому повезёт, тот первый и захватит ресурс?

Добавлено через 6 минут и 48 секунд
В MSDN-е, вроде, написано, что первый установивший ожидание первым и получит разблокированный mutex, но я не уверен в правильности перевода (своего smile).

Автор: dumb 10.12.2007, 13:21
по идее, порядок очередности вроде бы должен соблюдаться, но на практике "закладываться" на это нельзя.
дело в том, что окончание ожидания на синх.объекте не вызывает "напрямую" ожидающие потоки "в порядке общей очереди", а только инициирует перепланирование выполнения потоков, при этом у ожидающих на освободившемся объекте потоков динамически повышается приоритет(на 1 единицу в течение одного кванта, причем потоки интерактивного процесса "приподнимаются" еще на n единиц). поведение же планировщика особой детерминированностью не страдает, и, например, при подключении к процессу отладчика, порядок освобождения нарушается.

резюме: исходить надо из предположения
Цитата(EnergoHokum @  10.12.2007,  11:22 Найти цитируемый пост)
кому повезёт, тот первый и захватит ресурс
smile

Автор: EnergoHokum 11.12.2007, 09:08
Понятно, спасибо, вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)