Ограничение ОЗУ и ЦП для потока в .net

Мне нужно установить максимальный предел использования ЦП / ОЗУ для некоторого потока. Как это можно сделать с помощью .net (без использования виртуализации)?


person Alkankel    schedule 23.07.2012    source источник
comment
Под оперативной памятью вы подразумеваете стек или кучу? У вас есть некоторая гибкость в отношении размера стека, но куча и процессор? не так много AFAIK.   -  person Marc Gravell    schedule 23.07.2012


Ответы (2)


AFAIK вы не можете делать это для каждого потока. Вы можете делать это только для каждого процесса. Единственное, что вы можете сделать, описано здесь

person Eiver    schedule 23.07.2012
comment
Неужели такое возможно? Пример или ссылку пожалуйста. - person leppie; 23.07.2012
comment
@leppie Вы можете установить привязку к процессору для процесса, что может эффективно ограничить его использование ЦП. Не уверен насчет памяти ... не думаю, что это возможно. - person Cody Gray; 23.07.2012
comment
Для ограничения ОЗУ вы можете использовать msdn.microsoft.com/en-us/library/windows/desktop/ - person Eiver; 23.07.2012

Windows не предоставляет механизма для ограничения использования ЦП или памяти потоком.

Однако вы можете добиться аналогичного эффекта, изменив приоритет вашего потока. Потоки с более высоким приоритетом получают относительно большую долю ресурсов компьютера, в то время как потоки с более низким приоритетом сокращаются по расписанию, когда это необходимо, чтобы освободить место для потоков с более высоким приоритетом.

В мире .NET это удобно сделать через Свойство Thread.Priority, которое принимает одно из значений Значения ThreadPriority.

Обратите внимание, что оба потока и имеют уровни приоритета, и базовый уровень приоритета вашего потока будет определяться как значением, установленным вами для свойства Thread.Priority, так и приоритетом его процесса.

Связанный вопрос: Как я могу программно ограничить загрузка ЦП моей программы ниже 70%?

person Cody Gray    schedule 23.07.2012