Книга: Системное программирование в среде Windows
Безопасная отмена выполнения потоков
Безопасная отмена выполнения потоков
Обсуждение предыдущего примера продемонстрировало, как безопасно отменить выполнение целевого потока, который использует состояния дежурного ожидания. Несмотря на использование АРС, такую отмену выполнения иногда называют синхронной отменой (synchronous cancellation), поскольку отмена выполнения, которую инициировал вызов функции QueueUserAPC главным потоком, сможет осуществиться лишь тогда, когда целевой поток достигнет безопасного состояния дежурного ожидания.
Синхронная отмена выполнения требует участия в этом целевого потока, которая время от времени должна предоставлять возможность прекратить ее выполнение. Естественный способ вхождения в состояние дежурного ожидания предоставляют функции ожидания событий, поскольку в процессе прекращения работы системы объект события может не перейти вновь в сигнальное состояние. Ожидание мьютексов также можно выполнять в дежурном режиме, чтобы учесть те случаи, когда поток ожидает ресурса, который, возможно, не будет вновь доступным. Этот метод, например, может использоваться главным потоком для разрушения взаимной блокировки потоков.
Асинхронная отмена выполнения потоков (asynchronous thread cancellation) может применяться в тех случаях, когда сигнал должен посылаться потоку, который выполняет интенсивные вычисления и находится в состоянии ожидания ввода/вывода или событий исключительно редко, если это вообще происходит. Возможность асинхронной отмены выполнения потоков в Windows отсутствует, хотя и существуют методики, использующие зависящий от типа процессора код, которые позволяют прерывать выполнение определенного потока.
- Модель переменных условий и свойства безопасности
- Пример: объект порогового барьера
- Объект очереди
- Пример: использование очередей в многоступенчатом конвейере
- Асинхронные вызовы процедур
- Очередизация асинхронных вызовов процедур
- Состояния дежурного ожидания
- Безопасная отмена выполнения потоков
- Создание переносимых приложений с использованием потоков Pthreads
- Стеки потоков и допустимые количества потоков
- Рекомендации по проектированию, отладке и тестированию программ
- Как избежать создания некорректного программного кода
- За рамками Windows API
- Резюме
- Упражнения
- 8.5. Отмена выполнения потоков
- ГЛАВА 10 Усовершенствованные методы синхронизации потоков
- Создание переносимых приложений с использованием потоков Pthreads
- Права для выполнения резервного копирования
- Достоинства и недостатки потоков
- Упражнения для самостоятельного выполнения
- Безопасная работа с внешними таблицами
- Асинхронный сервер и отмена выполняющихся запросов
- 1.4.1. Кодирование во время выполнения
- Основания для выполнения проекта
- Полиморфизм на этапе выполнения
- Запуск сценариев на удаленных машинах. Контроль за ходом выполнения таких сценариев