Основы программирования в Win32API. Марапулец Ю.В. - 15 стр.

UptoLike

Составители: 

приостановить поток и возобновить его выполнение;
прекратить выполнение потока;
определить код завершения потока.
В ОС Windows потоки, процессы, семафоры и исключающие семафоры
могут иметь несколько разных дескрипторов. Завершив работу с объектом, не-
обходимо вызвать функцию CloseHandle(), которая, закрыв последний деск-
риптор, сама уничтожит объект. В целом в Windows каждый процесс не может
одновременно поддерживать более 65 536 открытых дескрипторов.
Работа с потоками не сводится только к их запуску и остановке. Необ-
ходимо обеспечить совместное функционирование потоков. Для организа-
ции эффективного взаимодействия между несколькими потоками необходи-
мо производить контроль за их временными параметрами. Контроль
осуществляется [2]:
установлением приоритетов;
синхронизацией.
Приоритет потока определяет, насколько часто данный поток получает
доступ к центральному процессору. Синхронизация регулирует порядок обра-
щения потоков к общим ресурсам. Когда системная программа-планировщик
останавливает один поток и ищет другой, который должен быть запущен сле-
дующим, она отдает предпочтение потокам, имеющим наиболее высокий при-
оритет. Обработчики системных прерываний всегда имеют более высокий
приоритет по сравнению с пользовательскими процессами. Каждому процессу
присущ собственный приоритет. Базовый плановый приоритет потока опреде-
ляется на основе приоритета процесса, который является владельцем этого по-
тока. Всего различают 32 уровня приоритета: от 0 до 31. При этом приоритеты
уровня от 0 до 15 называются переменными приоритетами, а от 16 до 31 –
фиксированными приоритетами. Схема наследования приоритетов потока по-
казана на рис. 2.2 [2].
Среди атрибутов объекта потока различают базовый и динамический при-
оритеты. При вызове команды для изменения приоритета потока меняется его
базовый приоритет, который не может быть выше или ниже приоритета процес-
са-владельца более чем на 2 уровня. Операционная система способствует «про-
движению» потока для его выполнения. Для этого система поддерживает дина-
мический приоритет потоков, которые выполняют важные задачи. Например,
если процесс выводит информацию в окно либо считывает данные с диска, вре-
менно повышается приоритет всех потоков такого процесса. Эти временные
приращения в сумме с базовым приоритетом образуют динамический приоритет
процесса. Планировщик определяет очередность выполнения потоков на осно-
вании их динамического приоритета. Со следующим тактом процесса прираще-
ние приоритета начинает уменьшаться на один уровень, постепенно достигая
уровня базового приоритета.
15
     – приостановить поток и возобновить его выполнение;
     – прекратить выполнение потока;
     – определить код завершения потока.
     В ОС Windows потоки, процессы, семафоры и исключающие семафоры
могут иметь несколько разных дескрипторов. Завершив работу с объектом, не-
обходимо вызвать функцию CloseHandle(), которая, закрыв последний деск-
риптор, сама уничтожит объект. В целом в Windows каждый процесс не может
одновременно поддерживать более 65 536 открытых дескрипторов.
     Работа с потоками не сводится только к их запуску и остановке. Необ-
ходимо обеспечить совместное функционирование потоков. Для организа-
ции эффективного взаимодействия между несколькими потоками необходи-
мо производить контроль за их временными параметрами. Контроль
осуществляется [2]:
     – установлением приоритетов;
     – синхронизацией.
     Приоритет потока определяет, насколько часто данный поток получает
доступ к центральному процессору. Синхронизация регулирует порядок обра-
щения потоков к общим ресурсам. Когда системная программа-планировщик
останавливает один поток и ищет другой, который должен быть запущен сле-
дующим, она отдает предпочтение потокам, имеющим наиболее высокий при-
оритет. Обработчики системных прерываний всегда имеют более высокий
приоритет по сравнению с пользовательскими процессами. Каждому процессу
присущ собственный приоритет. Базовый плановый приоритет потока опреде-
ляется на основе приоритета процесса, который является владельцем этого по-
тока. Всего различают 32 уровня приоритета: от 0 до 31. При этом приоритеты
уровня от 0 до 15 называются переменными приоритетами, а от 16 до 31 –
фиксированными приоритетами. Схема наследования приоритетов потока по-
казана на рис. 2.2 [2].
     Среди атрибутов объекта потока различают базовый и динамический при-
оритеты. При вызове команды для изменения приоритета потока меняется его
базовый приоритет, который не может быть выше или ниже приоритета процес-
са-владельца более чем на 2 уровня. Операционная система способствует «про-
движению» потока для его выполнения. Для этого система поддерживает дина-
мический приоритет потоков, которые выполняют важные задачи. Например,
если процесс выводит информацию в окно либо считывает данные с диска, вре-
менно повышается приоритет всех потоков такого процесса. Эти временные
приращения в сумме с базовым приоритетом образуют динамический приоритет
процесса. Планировщик определяет очередность выполнения потоков на осно-
вании их динамического приоритета. Со следующим тактом процесса прираще-
ние приоритета начинает уменьшаться на один уровень, постепенно достигая
уровня базового приоритета.




                                    15