Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как убить thread?


Автор: infarch 26.9.2019, 16:23
Здравствуйте.

Вопрос немного странный, но тем не мене... как убить thread? Есть скрипт который в несколько потоков выполняет разные задачи. Очень редко один из потоков может умереть с сообщением в консоли "thread terminated abnormally". Выполнение задач завернуто в eval, но вот иногда и это не помогает. Моя задача добавить периодический контроль рабочих потоков. Работу надо протестировать, а как - не знаю smile 

Автор: arto 26.9.2019, 17:10
kill не помогает?

Автор: infarch 27.9.2019, 13:26
Попробовал в одну из выполняемых функций добавить строку:

Код

threads->self()->kill('KILL');


Возникла ошибка:

Signal KILL received in thread 1, but no signal handler set.

Она была поймана в eval, поток выжил. Надо нечто более смертельное. Задача именно убить поток на корню.

Автор: arto 27.9.2019, 13:33
попробуйте определить в треде 
Код

$SIG{'KILL'} = sub { threads->exit(); };

Автор: infarch 30.9.2019, 09:34
arto, спасибо! Тред завершился, что было продектировано и обработано. Надеюсь что ошибка "terminated abnormally" приведет к тому-же результату.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)