Значения свойства Priority для Windows
Таблица 14.2. Значения свойства Priority для Windows
Значение приоритета |
Приоритет |
Cоответствующее числовое значение |
Tpldle |
Данный поток выполняется, когда система не занята и не выполняются никакие другие потоки Windows не будет прекращать работу других потоков для выполнения потока, имеющего приоритет tpldle |
-15 |
TpLowest |
Низший приоритет выполнения. Данный поток занимает минимум процессорного времени |
-2 |
TpLower |
Низкий приоритет. Данный поток занимает немного больше процессорного времени, чем имеющий приоритет tpLowest |
-1 |
TpNormal |
Нормальный приоритет. Все потоки по умолчанию имеют приоритет tpNormal |
0 |
TpHigher |
Высокий приоритет. Данный поток имеет приоритет выше нормального |
1 |
TpHighest |
Высший приоритет. Данный поток имеет приоритет выше, чем tpHigher |
2 |
TpTimeCntical |
Наивысший приоритет Поток с данным приоритетом занимает максимум процессорного времени |
15 |
Примечание
Использование высших и наивысших приоритетов может привести к замедлению работы других потоков Применение данных видов приоритетов целесообразно использовать в случае, когда возникает острая необходимость в скорейшем выполнении одного из процессов
Поведение потока
при завершении его работы
Обычна при завершении своей работы поток просто освобождается. Однако иногда бывает необходимо, чтобы завершение работы и освобождение потока было согласовано с другими потоками. Например, вы можете ожидать какое-либо значение, возвращаемое одним потоком, перед выполнением другого потока. Для реализации этого вы не должны освобождать первый поток, пока второй не получит значение, возвращаемое первым. Для управления завершением работы потока существует свойство потока FreeOnTerminate. Пo умолчанию данное свойство установлено в true. При этом поток освобождается по завершении своей работы. Если же установить данное свойство в false, то вы можете сами завершить работу потока.
Кроме того, в Kylix имеется возможность прекратить выполнение одного потока подачей команды о прекращении из другого потока. Когда один поток пытается прекратить работу другого потока, он вызывает метод Terminate. В результате, свойство Terminate потока будет установлено в true, что можно проверить во время выполнения метода Execute (листинг 14.3).