LINUX.ORG.RU

Вопрос, сколько ему ещё времени понадобится, чтобы полностью завришится (thread exited в gdb). Наверное, завершение join является гарантией, что thread полностью завершён. Надо бы в gdb глянуть.

gag ★★★★★
()
Ответ на: комментарий от gag

Интересно, вот что сегодня нашел

Запрет и режим принудительного завершения определяют действия, которые будут выполнены при получении запроса на принудительное завершение. Каждая нить управляет своими параметрами запрета и режима принудительного завершения с помощью процедур pthread_setcancelstate и pthread_setcanceltype.

Для параметра запрета принудительного завершения, а также режима принудительного завершения допустимо по два значения, т.е. всего возможно три варианта, как видно из таблицы. Запрет завершения Режим завершения Вариант Запрещено Любой (параметр игнорируется) Вариант 1 Разрешено Отложенное Вариант 2 Разрешено Асинхронное Вариант 3 Ниже подробно рассматриваются все три варианта

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

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

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

neutrino
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.