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

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

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

Чтобы отменить поток, вызовите функцию pthread_cancel(), передав ей идентификатор требуемого потока. Далее можно дождаться завершения потока. Вообще-то, это обязательно нужно делать с целью освобождения ресурсов, если только поток не является отсоединенным. Отмененный поток возвращает специальное значение PTHREAD_CANCELED.

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

С точки зрения возможности отмены поток находится в одном из трех состояний.

Асинхронно отменяемый. Такой поток можно отменить в любой точке его выполнения.

Синхронно отменяемый. Поток можно отменить, но не везде. Запрос на отмену помещается в очередь, и поток отменяется только по достижении определенной точки.

Неотменяемый. Попытки отменить поток игнорируются. Первоначально поток является синхронно отменяемым.

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

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

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

Отмена ошибочных действий

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

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


Отмена нескольких последних действий

Из книги Видеосамоучитель монтажа домашнего видео в Adobe Premiere Pro CS3 автора Днепров Александр Г

Отмена нескольких последних действий Отменим сделанные изменения, чтобы все клипы проекта располагались в одном списке в окне Project (Проект).1. Перейдите на вкладку History (История), расположенную в левом нижнем окне программы. На ней отображается список всех действий над


Отмена проверки соответствия правилам BP 1.1

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Отмена проверки соответствия правилам BP 1.1 Чтобы полностью отключить проверку соответствия BP 1.1 для Web-сервиса XML, определите в соответствующем файле Web.соnfig элемент‹conformanceWarnings›. ‹configuration›  ‹webServices›   ‹conformanceWarnings›    ‹remove name="BasicProfile1_1" /›  


Отмена деформаций, или инструмент Реконструкция

Из книги Photoshop. Мультимедийный курс автора Мединов Олег

Отмена деформаций, или инструмент Реконструкция Отменить сделанные изменения в картинке можно нажав сочетание клавиш Ctrl+Z или нажав кнопку Отмена в окне Пластика. В последнем случае, помимо того что деформации будут отменены, будет еще и закрыто окно Пластика.Однако


Отмена и повторение изменений

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Отмена и повторение изменений Многие действия, произведенные над проектом, можно отменить. Выполняется это с помощью команды меню Монтаж ? Отменить <действие>. Вместо <действие> после слова Отменить в названии пункта меню записано, какое конкретно действие будет


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

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

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


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

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

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


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

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

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


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

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

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


Отмена открытого ключа.

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

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


Уничтожение (отмена) потока

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Уничтожение (отмена) потока Корректное завершение выполняющегося потока «извне», из другого потока (то есть асинхронно относительно прерываемого потока), — задача отнюдь не тривиальная; она намного сложнее аналогичной задачи прерывания процесса. Это связано с


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

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

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


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

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

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


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

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

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


Асинхронная отмена вызовов для InterBase 6.5

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

Асинхронная отмена вызовов для InterBase 6.5 Начиная с версии 6 5 Gemini ODBC-драйвер способен использовать новую возможность InterBase версии 6.5 - асинхронную отмену выполняющихся на сервере


Отмена выполненного действия

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

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