Запрос помещается в простой
рабочий поток
|
WT_EXECUTEINIOTHREAD
|
1
|
Запрос помещается в поток
ввода/вывода
|
WT_EXECUTEINPERSISTENTTHREAD
|
0x80
|
Запрос помещается в поток, который не завершается после обработки запроса, поэтому он может сохранять
свое состояние, например в TLS.
|
WT_EXECUTELONGFUNCTION
|
0x10
|
Запрос с данным флагом
всегда помещается в новый поток
|
Таблица 3. Флаги функции QueueUserWorkItem.
Если вы не выполняете асинхронных запросов
ввода/вывода в функции ThreadProc, не используете TLS (Thread Local Storage)
или функций, которые его используют, а продолжительность выполнения операции
невелика – указывайте флаг WT_EXECUTEDEFAULT.
Предположим, вы начали асинхронную операцию
ввода/вывода в своей функции ThreadProc. Для того чтобы она завершилась, поток
в котором она началась, не должен быть разрушен. Однако флаг WT_EXECUTEDEFAULT
этого не гарантирует. С этим флагом поток может быть удален, даже если у него
имеются незавершенные асинхронные операции. Для того чтобы поток завершался
только после окончания всех начатых асинхронных операций, нужно указать флаг
WT_EXECUTEINIOTHREAD.
При указании флага WT_EXECUTEINPERSISTENTTHREAD пакет
запроса помещается в поток, который никогда не удаляется, так что вы спокойно
можете использовать TLS. Так как поток всего один, не рекомендуется выполнять в
нем продолжительных операций.
И наоборот, если вам нужно каждый раз выполнять длительную
операцию, укажите флаг WT_EXECUTELONGFUNCTION. Для каждой такой операции
создается новый поток, который после ее обработки удаляется.
Характеристика
|
Значение
|
Начальное коли-чество
потоков в пуле
|
0
|
Когда поток удаляется
|
Поток не имеет незавершенных
операций ввода/вывода и простаивает некоторое время
|
Способ ожидания, используемый потоком
|
Тревожное (alertable)
ожидание
|
Поток просыпается при
|
Приходе APC-запроса Рекомендуем скачать другие рефераты по теме: реферати, инновационная деятельность.
Предыдущая страница реферата | 10
11
12
13
14
15
16
17
18
19
20 | Следующая страница реферата
|
|