Любой, кто использовал Windows, время от времени видел системное сообщение о том, что программа не отвечает, но как именно Windows это знает? Сегодняшний пост SuperUser Q&A дает ответ на вопрос сбитого с толку читателя.
Сегодняшняя сессия вопросов и ответов проходит благодаря SuperUser - подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.
Фото любезно предоставлено Матиас Рипп (Flickr) .
Вопрос
Читатель SuperUser ArunPrasanth хочет знать, как Windows узнает, что программа не отвечает:
Как Windows узнает, что программа не отвечает? Постоянно опрашивает все запущенные приложения?
Как Windows узнает, что программы не отвечают?
Ответ
Уродца с храповым механизмом SuperUser есть для нас ответ:
Приложение получает события из очереди, предоставленной Windows. Если приложение не опрашивает очередь событий в течение некоторого времени (5 секунд), например, выполняя длительные вычисления, то Windows предполагает, что приложение зависло, и предупреждает пользователя.
Чтобы этого избежать, приложениям следует передавать дорогостоящие вычисления рабочим потокам или разделять обработку и обеспечивать регулярный опрос очереди.
Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь .