Pull to refresh

Следствие алгоритма планировщика: низкоприоритетные нити могут занять 100% CPU

Reading time1 min
Views1K
Original author: Raymond Chen
Время от времени я вижу вариации на этот вопрос. «Почему моя низкоприоритетная нить съедает 100% CPU?»

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

Приоритет просто контролирует, какая нить получит первые фишки процессорного времени, но если вы устраиваете так, что ваша нить только одна, кто хочет запуститься, тогда она получит весь процессор. Курица, низшая по порядку клевания съедает всё, что ей захочется, если нет более высокоранговых куриц вокруг. Вы заплатили за этот процессор. Нет причин злобно отказывать в нём.

UPD: всем спасибо за карму. перенес в специализированный блог.
Tags:
Hubs:
+3
Comments10

Articles

Change theme settings