Расписание потоков
Обновлен: Ноябрь 2007
Каждому потоку присваивается приоритет. Потоки, созданные в среде CLR, изначально имеют приоритет ThreadPriority.Normal. Потоки, созданные вне среды выполнения, оставляют приоритет, который был у них до попадания в управляемую среду. Получить или указать приоритет для потока можно с помощью свойства Thread.Priority.
Планирование выполнения потоков осуществляется с учетом их приоритета. Для всех потоков, включая потоки, выполняемые в среде выполнения, операционная система выделяет время процессора. Особенности алгоритма расписания, используемого для задания порядка выполнения потоков, различаются в зависимости от используемой операционной системы. В некоторых операционных системах поток с наивысшим приоритетом (из выполняемых потоков) запускается в первую очередь. Если доступны несколько потоков с одинаковым приоритетом, планировщик циклически проходит по потокам с данным приоритетом и назначает каждому из потоков время его выполнения. До тех пор, пока не будут запущены все потоки с высшим приоритетом, потоки с низшими приоритетом выполняться не будут. Если потоки с заданным приоритетом отсутствуют, планировщик переходит к обработке потоков с более низким приоритетом. При этом если возникает готовый к запуску поток с высоким приоритетом, поток с более низким приоритетом прерывается и выполняется поток с высоким приоритетом. Кроме этого, операционная система может динамически настраивать приоритеты потоков по мере перемещения пользовательского интерфейса приложения между теневыми и основными потоками. В других операционных системах можно применять другие алгоритмы расписания.
См. также
Основные понятия
Управляемые и неуправляемые потоки в Microsoft Windows