Мне нужно установить максимальный предел использования ЦП / ОЗУ для некоторого потока. Как это можно сделать с помощью .net (без использования виртуализации)?
Ограничение ОЗУ и ЦП для потока в .net
Ответы (2)
AFAIK вы не можете делать это для каждого потока. Вы можете делать это только для каждого процесса. Единственное, что вы можете сделать, описано здесь
Windows не предоставляет механизма для ограничения использования ЦП или памяти потоком.
Однако вы можете добиться аналогичного эффекта, изменив приоритет вашего потока. Потоки с более высоким приоритетом получают относительно большую долю ресурсов компьютера, в то время как потоки с более низким приоритетом сокращаются по расписанию, когда это необходимо, чтобы освободить место для потоков с более высоким приоритетом.
В мире .NET это удобно сделать через Свойство Thread.Priority, которое принимает одно из значений Значения ThreadPriority.
Обратите внимание, что оба потока и имеют уровни приоритета, и базовый уровень приоритета вашего потока будет определяться как значением, установленным вами для свойства Thread.Priority, так и приоритетом его процесса.
Связанный вопрос: Как я могу программно ограничить загрузка ЦП моей программы ниже 70%?