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

UptoLike

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

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) ;
} …
2.3. Управление потоками и процессами
2.3.1. Изменение приоритета процесса
Потоки, обладающие высоким приоритетом, занимают большую часть
времени центрального процессора, раньше завершают свою работу и способны
быстрее реагировать на действия пользователя. Если всем потокам будет при-
своен одинаково высокий приоритет, ничего хорошего не выйдет. Дело
в том,
что если нескольким потокам будет присвоен один и тот же приоритет (не
имеет значения, высокий или низкий), то программа-планировщик выделит им
одинаковое время работы центрального процессора, и сама идея приоритетов
утратит смысл. Один поток сможет быстрее реагировать сигналами на сигналы
только в том случае, если будут замедлены другие потоки. Это же правило в
равной степени применимо и к процессам. Старайтесь ограничивать приоритет
всех потоков и процессов низким или средним уровнем и присваивайте им вы-
сокий приоритет только по мере необходимости [2].
Приведенные ниже функции проверяют или изменяют базовый
приоритет потока:
BOOL SetThreadPriority
(HANDLE hThread // дескриптор потока
int iPriority); // новый уровень приоритета
int GetThreadPriority (HANDLE hThread);…
Функция SetThreadPriority() возвращает значение TRUE в случае успешно-
го завершения потока, а значение FALSEи при возникновении ошибки. Функ-
23
         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) ;
}…



                  2.3. Управление потоками и процессами


                    2.3.1. Изменение приоритета процесса

     Потоки, обладающие высоким приоритетом, занимают большую часть
времени центрального процессора, раньше завершают свою работу и способны
быстрее реагировать на действия пользователя. Если всем потокам будет при-
своен одинаково высокий приоритет, ничего хорошего не выйдет. Дело в том,
что если нескольким потокам будет присвоен один и тот же приоритет (не
имеет значения, высокий или низкий), то программа-планировщик выделит им
одинаковое время работы центрального процессора, и сама идея приоритетов
утратит смысл. Один поток сможет быстрее реагировать сигналами на сигналы
только в том случае, если будут замедлены другие потоки. Это же правило в
равной степени применимо и к процессам. Старайтесь ограничивать приоритет
всех потоков и процессов низким или средним уровнем и присваивайте им вы-
сокий приоритет только по мере необходимости [2].
     Приведенные ниже функции проверяют или изменяют базовый
приоритет потока:
BOOL SetThreadPriority
       (HANDLE hThread                    // дескриптор потока
       int iPriority);                  // новый уровень приоритета
int GetThreadPriority (HANDLE hThread);…
     Функция SetThreadPriority() возвращает значение TRUE в случае успешно-
го завершения потока, а значение FALSE – и при возникновении ошибки. Функ-

                                    23