Операционные системы. Учебное пособие. Марапулец Ю.В. - 64 стр.

UptoLike

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

lpThreadId - указатель на 32-битную переменную, которой будет присвоено значение
уникального идентификатора потока.
Пример: программа, порождающая поток
#include <stdio.h>
#include <conio.h>
#include <windows.h>
DWORD WINAPI Output( LPVOID Param )
{
while( TRUE )
{
printf( "A" ) ;
Sleep(100) ;
}
return( 0 ) ;
}
main()
{
HANDLE hThread ;
DWORD ThreadId ;
hThread = CreateThread( NULL, 0, Output, NULL, 0, &ThreadId ) ;
getch() ;
TerminateThread( hThread, 0 ) ;
return(0) ;
}
Потоки, обладающие высоким приоритетом, занимают большую часть времени
центрального процессора, раньше завершают свою работу и способны быстрее реагиро-
вать на действия пользователя. Если всем потокам будет присвоен одинаково высокий
приоритет, ничего хорошего не выйдет. Дело в том, что если нескольким потокам будет
присвоен один и тот же приоритет (не имеет значения, высокий или низкий), программа
- планировщик выделит им одинаковое время работы центрального процессора, и сама
идея приоритетов утратит смысл. Один поток сможет быстрее реагировать сигналы на
сигналы только в том случае, если будут замедлены другие потоки. Это же правило в
равной степени и применимо и к процессом. Старайтесь ограничивать приоритет всех
потоков и процессов низким или средним уровнем и присваивайте им высоких приори-
тет только по мере необходимости [8, 12].
Приведенные ниже функции проверяют или изменяют базовый приоритет потока.
BOOL SetThreadPriority(
HANDLE hThread // дескриптор потока
int iPriority ); // новый уровень приоритета
int GetThreadPriority ( HANDLE hThread );
Функция SetThreadPriority возвращает значение TRUE в случае успешного завер-
шения потока, а значение FALSE -при возникновении ошибки. Функция GetThread-
Priority возвращает значение, определяющее приоритет. Для обозначения возможных
значений приоритета в обеих функциях используется набор констант.
66
lpThreadId - указатель на 32-битную переменную, которой будет присвоено значение
     уникального идентификатора потока.
Пример: программа, порождающая поток

#include 
#include 
#include 
DWORD WINAPI Output( LPVOID Param )
{
       while( TRUE )
               {
                     printf( "A" ) ;
                     Sleep(100) ;
               }
       return( 0 ) ;
}
main()
{
       HANDLE hThread ;
       DWORD ThreadId ;
       hThread = CreateThread( NULL, 0, Output, NULL, 0, &ThreadId ) ;
       getch() ;
       TerminateThread( hThread, 0 ) ;
       return(0) ;
}

      Потоки, обладающие высоким приоритетом, занимают большую часть времени
центрального процессора, раньше завершают свою работу и способны быстрее реагиро-
вать на действия пользователя. Если всем потокам будет присвоен одинаково высокий
приоритет, ничего хорошего не выйдет. Дело в том, что если нескольким потокам будет
присвоен один и тот же приоритет (не имеет значения, высокий или низкий), программа
- планировщик выделит им одинаковое время работы центрального процессора, и сама
идея приоритетов утратит смысл. Один поток сможет быстрее реагировать сигналы на
сигналы только в том случае, если будут замедлены другие потоки. Это же правило в
равной степени и применимо и к процессом. Старайтесь ограничивать приоритет всех
потоков и процессов низким или средним уровнем и присваивайте им высоких приори-
тет только по мере необходимости [8, 12].
      Приведенные ниже функции проверяют или изменяют базовый приоритет потока.

BOOL SetThreadPriority(
     HANDLE hThread                                    // дескриптор потока
     int iPriority );                                  // новый уровень приоритета

int GetThreadPriority ( HANDLE hThread );

      Функция SetThreadPriority возвращает значение TRUE в случае успешного завер-
шения потока, а значение FALSE -при возникновении ошибки. Функция GetThread-
Priority возвращает значение, определяющее приоритет. Для обозначения возможных
значений приоритета в обеих функциях используется набор констант.




                                            66