Использование процессора Explorer.exe увеличивается с процессами без проводника? - PullRequest
2 голосов
/ 26 февраля 2011

У меня есть программа, которая запускается в проводнике Windows.Обычно, если никакие другие программы не запущены, он будет использовать 2-3% ЦП (следовательно, explorer.exe покажет 2-3% в мониторе ресурсов).Когда моя программа не запущена и запущена другая программа, которая не увеличивает использование процессора explorer.exe (например, FireFox), использование процессора explorer.exe будет незначительным.как описано выше, работают одновременно, explorer.exe увеличит использование процессора до 8-10%.

Я заметил, что то же самое происходит с другими программами, работающими в проводнике Windows.

Кто-нибудь знает, почему это происходит?Это что-то присуще Windows или есть другие программы, которые могут вызывать это?

PS Это не имеет ничего общего с Internet Explorer (iexplorer.exe)

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

проводник подписывается на события файловой системы, чтобы обновлять его отображение при изменении размера файла, дате, новых файлов и т. Д.

Если другой процесс затрагивает много файлов, это может увеличить работу проводника, и, следовательно, использование ЦП проводника.

1 голос
/ 26 февраля 2011

Это из-за переключения задач (и, возможно, дополнительно пейджинга). Если есть только одна программа, требующая много времени ЦП и / или обращений к памяти, ей будет предоставлено много временных интервалов ЦП и, таким образом, она сможет работать без перерыва в течение «длительного» времени. С другой стороны, если нескольким процессам требуется много процессорного времени, Windows будет часто переключаться между ними и, таким образом, вводит дополнительные служебные данные (поскольку для каждого переключателя задач необходимо сохранять / загружать состояние процесса). ). Если у вас 2 ЦП, это менее проблематично, но все же измеримо, потому что фоновые процессы также требуют внимания, хотя и реже.

Смотрите здесь для получения дополнительной информации:

http://en.wikipedia.org/wiki/Context_switch

Если это беспокоит, вы можете попробовать это, но я не уверен, что это работает, поэтому, пожалуйста, не голосуйте, если это не так:

Вставка вызовов Sleep (10) в вашу программу; ваша программа должна получить более длинные, но менее частые временные интервалы:

http://msdn.microsoft.com/en-us/library/ms686298%28VS.85%29.aspx

...