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

UptoLike

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

ция GetThreadPriority() возвращает значение, определяющее приоритет.
Для обозначения возможных значений приоритета в обеих функциях ис-
пользуется набор констант:
THREAD_PRIORITY_LOWESTCor" – на два уровня ниже приоритета процесса;
THREAD_PRIORITY_BELOW_NORMAL – на один уровень ниже приоритета
процесса;
THREAD_PRIORITY_NORMAL
Тот же уровень приоритета, что и у процесса;
THREAD_PRIORITY_ABOVE_NORMAL
На один уровень выше приоритета
процесса;
THREAD_PRIORITY_HIGHEST
На два уровня выше приоритета процесса;
THREAD_PRIORITY_TIME_CRITICAL
Уровень 15 (для обычных пользова-
тельских процессов);
THREAD_PRIORITY_IDLE
Уровень 1 (для обычных пользовательских про-
цессов).
2.3.2. Прерывание и возобновление выполнения потоков
Прерванный поток приостанавливает свое выполнение и не учитывается
при распределении времени центрального процессора. Поток остается
в таком состоянии до тех пор, пока другой поток не возобновит его выполне-
ние. Остановку потока можно произвести, в частности, в том случае, если
пользователь прерывает выполнение определенной задачи. До тех пор, пока
задание не будет отменено, поток можно перевести в состояние ожидания. Ес-
ли пользователь решит продолжить работу, поток возобновит выполнение с
той точки, где он был остановлен. Для приостановки и возобновления выпол-
нения потоков служат функции:
DWORD SuspendThread (HANDLE hThread);
DWORD ResumeThread(HANDLE hThread).
Один и тот же поток можно последовательно остановить несколько раз,
не возобновляя его выполнения, однако каждой последовательной команде
SuspendThread() должна соответствовать ответная команда ResumeThread().
Система отсчитывает количество отмененных команд с помощью счетчика
прерываний. Каждая команда SuspendThread() инкрементирует значения счет-
чика, а каждая команда ResumeThread() декрементирует его. Обе функции воз-
вращают предыдущее значение счетчика в виде параметра типа DWORD. По-
ток возобновит свое выполнение только в том случае, если счетчик примет
значение 0.
Поток способен остановить себя, но он не в состоянии самостоятельно во-
зобновить свое выполнение. Однако он может на нужное время перенести себя
в режим ожидания. Функция Sleep() задерживает выполнения потока, удаляя
его из очереди программы-планировщика до тех пор, пока не пройдет задан-
24
ция GetThreadPriority() возвращает значение, определяющее приоритет.
    Для обозначения возможных значений приоритета в обеих функциях ис-
пользуется набор констант:
THREAD_PRIORITY_LOWESTCor" – на два уровня ниже приоритета процесса;
THREAD_PRIORITY_BELOW_NORMAL – на один уровень ниже приоритета
процесса;
THREAD_PRIORITY_NORMAL – Тот же уровень приоритета, что и у процесса;
THREAD_PRIORITY_ABOVE_NORMAL – На один уровень выше приоритета
процесса;
THREAD_PRIORITY_HIGHEST – На два уровня выше приоритета процесса;
THREAD_PRIORITY_TIME_CRITICAL – Уровень 15 (для обычных пользова-
тельских процессов);
THREAD_PRIORITY_IDLE – Уровень 1 (для обычных пользовательских про-
цессов).



          2.3.2. Прерывание и возобновление выполнения потоков

     Прерванный поток приостанавливает свое выполнение и не учитывается
при распределении времени центрального процессора. Поток остается
в таком состоянии до тех пор, пока другой поток не возобновит его выполне-
ние. Остановку потока можно произвести, в частности, в том случае, если
пользователь прерывает выполнение определенной задачи. До тех пор, пока
задание не будет отменено, поток можно перевести в состояние ожидания. Ес-
ли пользователь решит продолжить работу, поток возобновит выполнение с
той точки, где он был остановлен. Для приостановки и возобновления выпол-
нения потоков служат функции:
DWORD SuspendThread (HANDLE hThread);
DWORD ResumeThread(HANDLE hThread).
     Один и тот же поток можно последовательно остановить несколько раз,
не возобновляя его выполнения, однако каждой последовательной команде
SuspendThread() должна соответствовать ответная команда ResumeThread().
Система отсчитывает количество отмененных команд с помощью счетчика
прерываний. Каждая команда SuspendThread() инкрементирует значения счет-
чика, а каждая команда ResumeThread() декрементирует его. Обе функции воз-
вращают предыдущее значение счетчика в виде параметра типа DWORD. По-
ток возобновит свое выполнение только в том случае, если счетчик примет
значение 0.
     Поток способен остановить себя, но он не в состоянии самостоятельно во-
зобновить свое выполнение. Однако он может на нужное время перенести себя
в режим ожидания. Функция Sleep() задерживает выполнения потока, удаляя
его из очереди программы-планировщика до тех пор, пока не пройдет задан-
                                    24