Отредактировано: Первоначально изложены два вопроса, они были проверены и получили ответ.C# предельная нить Использование ЦП
Я создаю многопоточный читатель/писатель, который просматривает файлы в наборе папок. Он делает это каждые 5 минут или меньше, если пользователь указывает его.
Моя текущая проблема заключается в том, что поток будет смотреть на файлы с слишком высокой прожорливостью. Я хочу ограничить поток использованием максимум 30% процессора (или указанной пользователем суммы, если они хотят быстрее или медленнее). Причина этого в том, что это программа, которая должна быть всегда включена, и я не хочу, чтобы она мешала им просматривать Интернет или использовать другие программы одновременно. Я лично отмечаю, что потоковые программы, использующие 100% винтов ЦП с другими программами, даже если они настроены на более низкий приоритет, и пытаюсь избежать этого.
Я думал об использовании PerformanceCounter для проверки использования ЦП, надеюсь, что он идентифицирует программу и добавит больше циклов сна, если производительность (всего процессора или моей программы в зависимости от того, что она находит) начинает пик , Я не нашел никакой документации по ограничению использования процессора потоков, кроме «lol, why bother?», «Не реально выполнимо» без каких-либо причин (что совершенно нормально - большинство людей хотят, чтобы поток был выполнен как можно скорее, и не может быть способ сделать это присущим .Net или другой библиотеке C#).
Кто-нибудь знает о другом, кроме того, он устанавливает приоритет ниже или добавляет дополнительные накладные расходы, используя PerformanceCounter/какой-либо другой монитор ЦП? Благодарю.
Заканчивать [это] (http://stackoverflow.com/a/482622/884410) ответ –
Вы уверены, что ваша проблема является использование процессора, а не диск I/O? –
@MattBurland - yup - вот-вот опубликуйте это.Я только что делал «оптимальную глубину потока» для исследования задач, связанных с CPU. У меня были потоки 8/16/32/80/800, работающие на 4/8 ядрах на 100%, но, поскольку потоки пулов установлены в 'THREAD_PRIORITY_BELOW_NORMAL', мой браузер и т. Д. Все работало отлично. –