| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Порядок захвата handle несколькими желающими |
| Автор: EnergoHokum 10.12.2007, 11:22 |
| Если несколько "желающих" ожидают освобождения handle при помощи WaitForSingleObject, то кто из них первым получит доступ? Будет соблюдаться порядок очерёдности (первый вызвавший WaitFoeSingleObject первым и получит доступ), или кому повезёт, тот первый и захватит ресурс? Добавлено через 6 минут и 48 секунд В MSDN-е, вроде, написано, что первый установивший ожидание первым и получит разблокированный mutex, но я не уверен в правильности перевода (своего |
| Автор: dumb 10.12.2007, 13:21 |
| по идее, порядок очередности вроде бы должен соблюдаться, но на практике "закладываться" на это нельзя. дело в том, что окончание ожидания на синх.объекте не вызывает "напрямую" ожидающие потоки "в порядке общей очереди", а только инициирует перепланирование выполнения потоков, при этом у ожидающих на освободившемся объекте потоков динамически повышается приоритет(на 1 единицу в течение одного кванта, причем потоки интерактивного процесса "приподнимаются" еще на n единиц). поведение же планировщика особой детерминированностью не страдает, и, например, при подключении к процессу отладчика, порядок освобождения нарушается. резюме: исходить надо из предположения |
| Автор: EnergoHokum 11.12.2007, 09:08 |
| Понятно, спасибо, вопрос закрыт. |