Цитата Сообщение от AFZ Посмотреть сообщение
Люди, вы себе плохо представляете, что такое корпоративная многозадачка. Это же просто банальный перебор таблицы задач и прямой вызов CALL'ом подпрограммы, исполняющей ту или иную задачу.
Если в такой системе есть синхронные системные вызовы, то это Вы не вполне представляете, что такое корпоративная многозадачка. Потому что смысл синхронности системного вызова как раз в том, что управление не может быть возвращено в сделавшую вызов задачу до завершения обработки вызова в ядре. В результате рано или поздно складывается ситуация, когда все задачи ждут завершения системных вызовов и не могут быть вызваны. В такой ситуации вызывается задача idle.

В какой бы момент не произошло прерывание - выход из прерывания не может произойти в задачу idle, поэтому использование там команды WAIT совершенно безопасно. Если выход из прерывания может сразу попасть в задачу idle - значит система содержит ошибки. В нормально работающей системе возврат из прерывания сразу в задачу idle без "захода в ядро" абсолютно невозможен при любых раскладах.