Безопасная отмена выполнения потоков

Безопасная отмена выполнения потоков

Обсуждение предыдущего примера продемонстрировало, как безопасно отменить выполнение целевого потока, который использует состояния дежурного ожидания. Несмотря на использование АРС, такую отмену выполнения иногда называют синхронной отменой (synchronous cancellation), поскольку отмена выполнения, которую инициировал вызов функции QueueUserAPC главным потоком, сможет осуществиться лишь тогда, когда целевой поток достигнет безопасного состояния дежурного ожидания.

Синхронная отмена выполнения требует участия в этом целевого потока, которая время от времени должна предоставлять возможность прекратить ее выполнение. Естественный способ вхождения в состояние дежурного ожидания предоставляют функции ожидания событий, поскольку в процессе прекращения работы системы объект события может не перейти вновь в сигнальное состояние. Ожидание мьютексов также можно выполнять в дежурном режиме, чтобы учесть те случаи, когда поток ожидает ресурса, который, возможно, не будет вновь доступным. Этот метод, например, может использоваться главным потоком для разрушения взаимной блокировки потоков.

Асинхронная отмена выполнения потоков (asynchronous thread cancellation) может применяться в тех случаях, когда сигнал должен посылаться потоку, который выполняет интенсивные вычисления и находится в состоянии ожидания ввода/вывода или событий исключительно редко, если это вообще происходит. Возможность асинхронной отмены выполнения потоков в Windows отсутствует, хотя и существуют методики, использующие зависящий от типа процессора код, которые позволяют прерывать выполнение определенного потока.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

6.2. Безопасная архитектура – это фундамент

Из книги Защити свой компьютер на 100% от вирусов и хакеров автора Бойцев Олег Михайлович

6.2. Безопасная архитектура – это фундамент Итак, помимо централизованной политики безопасности, без которой де факто невозможно построение безопасной сети в принципе, особое внимание следует обратить на следующее моменты.? Использование безопасных протоколов обмена


Отмена объектной привязки

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

Отмена объектной привязки Snap to None – режим отмены всех текущих и разовых режимов объектной


Отмена действия

Из книги 3ds Max 2008 для дизайна интерьеров автора Семак Рита

Отмена действия Если вы выполнили ненужное или неправильное действие, например случайно удалили объект, то можете отменить ошибочное действие. Для этого предназначена кнопка Undo (Возврат) на главной панели инструментов. Каждый щелчок на ней позволяет последовательно


Промзона: Безопасная вилка для розеток Николай Маслухин

Из книги Цифровой журнал «Компьютерра» № 35 [20.09.2010 — 26.09.2010] автора Журнал «Компьютерра»

Промзона: Безопасная вилка для розеток Николай Маслухин ОпубликованоНиколай Маслухин Практически в любом мебельном магазине можно купить блокираторы дверей и ящиков, насадки на острые предметы, заглушки на электрические розетки и тому подобные


Безопасная электронная почта: шифруем сообщения

Из книги Интернет. Новые возможности. Трюки и эффекты [litres] автора Баловсяк Надежда Васильевна

Безопасная электронная почта: шифруем сообщения Вы, наверное, заметили, что очень часто при переходе на какой-либо сайт, где требуется регистрация и введение личных данных, в строке Адрес привычный http:// меняется на https:// и в нижней части окна Internet Explorer появляется значок в


8.5. Отмена выполнения потоков

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

8.5. Отмена выполнения потоков Обсуждая листинг 8.4, мы обратили внимание на наличие проблемы, возникающей при отмене выполнения потока, заблокированного вызовом pthread_cond_wait. Выполнение потока может быть отменено в том случае, если какой-нибудь другой поток вызовет функцию


Приоритеты процессов и потоков и планирование выполнения

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Приоритеты процессов и потоков и планирование выполнения Ядро Windows всегда запускает тот из потоков, готовых к выполнению, который обладает наивысшим приоритетом. Поток не является готовым к выполнению, если он находится в состоянии ожидания, приостановлен или


Стеки потоков и допустимые количества потоков

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Стеки потоков и допустимые количества потоков Следует сделать еще два предостережения. Во-первых, подумайте о размере стека, который по умолчанию составляет 1 Мбайт. В большинстве случаев этого будет вполне достаточно, но если существуют какие-либо сомнения на сей счет,


Отмена выполнения операций перекрывающегося ввода/вывода

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Отмена выполнения операций перекрывающегося ввода/вывода Булевская функция CancelIO позволяет отменить выполнение незавершенных операций перекрывающегося ввода/вывода, связанных с указанным дескриптором (у этой функции имеется всего лишь один параметр). Отменяется


13.2.3. Отмена отображения областей

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

13.2.3. Отмена отображения областей После окончания отображения в памяти процесс может отменить отображение памяти с помощью munmap(). Это приводит к тому, что последующие доступы к этому адресу будут генерировать SIGSEGV (если только память не будет перераспределена) и сохраняет


Глава 7 Безопасная работа в Linux

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Глава 7 Безопасная работа в Linux В этой главе мы в концептуальном плане, особо не вдаваясь в подробности, рассмотрим вопросы увеличения безопасности операционной системы Linux. Подробности вы всегда найдете в соответствующей литературе и главах, описывающих конкретное


25.1. Безопасная работа в Ubuntu

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

25.1. Безопасная работа в Ubuntu Вспомните главу 2, когда мы очень легко получили права root, используя загрузочный LiveCD. Точно так же доступ к вашей системе может получить и злоумышленник. Алгоритм прост: загружается с LiveCD, получает права root, делает все, что хочет, с файлами на


Отмена полномочий

Из книги автора

Отмена полномочий Оператор REVOKE требуется для удаления полномочий, назначенных операторами GRANT. Согласно стандарту, REVOKE должен каскадом отменить все привилегии, полученные всеми пользователями как результат WITH GRANT OPTION от данного пользователя. Однако вам не следует на это


4.2. Отмена потока

Из книги автора

4.2. Отмена потока Обычно поток завершается при выходе из потоковой функции или вследствие вызова функции pthread_exit(). Но существует возможность запросить из одного потока уничтожение другого. Это называется отменой, или принудительным завершением, потока.Чтобы отменить