Как дёрганье мышью на самом деле ускоряло работу в Windows 95
Один из пользователей сайта вопросов и ответов Stack Exchange вспомнил о странном поведении Windows 95 при установке приложений. По его словам, процесс можно было ускорить, если перемещать курсор мыши по экрану, однако он не нашёл объяснений в интернете.
"Я играл в Hypnospace Outlaw — игру об операционной системе в стиле ретро. Эта ОС своеобразно себя ведёт при загрузке сайтов: дёрганье мышью позволяет загрузить страницу быстрее.
Это напомнило мне кое о чём. Когда я был молод, я точно помню, что Windows 95 (если не в 98) странно себя вела во время установки программ: перемещение курсора мыши ускоряло прогресс. Чем это вызвано? Я пытался нагуглить ответ, но не нашёл ничего об этом."
Пользователи подтвердили правдивость воспоминаний user2652379. Они пояснили, что причина поведения системы крылась в её архитектуре.
Если программе нужно было, к примеру, скопировать файлы, система ставила запрос в очередь, ожидала наполнения буфера фоновыми задачами, и только после этого обрабатывала весь пакет. При этом пока задача находилась в режиме ожидания — приложение фактически не работало.
Двигая курсором мыши, пользователи заполняли буфер входящими событиями, заставляя систему перезапускать цикл. Это создавало эффект, что программа работает быстрее.
Перемещая курсор вы обходите систему, чтобы поднять свой запрос на обработку первее остальных.
В качестве примера пользователи привели установку крупных программ, которую можно было сократить с часа до 15 минут, двигая мышкой. Также одним из самых известных примеров была утилита дефрагментации диска, которую тоже можно было ускорить перемещениями курсора.
Как предположили комментаторы, такое поведение системы было обусловлено совместимостью с низкопроизводительным оборудованием. По одной из версий, систему спроектировали с прицелом на максимальную отзывчивость, поэтому действия пользователя поднимают программу в приоритете.
Пользователь под псевдонимом Cody Gray пояснил, что странное поведение Windows 95 могло быть связано не с самой системой, а с неправильным использованием её особенностей разработчиками. Он сослался на статью разработчика Microsoft Рэймонда Чена, который описал распространённую ошибку вызова функции MsgWaitForMultipleObjects.
В материале говорится, что функцию нельзя вызывать, если в очереди уже находятся задачи, ожидающие обработки. В противном случае она будет возвращать результат не сразу, а с задержками.
Как пояснили на Stack Exchange, подобная особенность встречалась только на Windows 95. В более поздних версиях системы архитектуру многозадачности изменили.