Exception в потоках.

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Exception в потоках.

Сообщение dionic » 04.09.2009 14:42:36

Всем привет народ! Подскажите кто знает, пишу многопоточное приложение в Lazarus под Linux. Так вот если в потоке возникает исключительная ситуация, то он завершается. Это можно как то отследить?
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Exception в потоках.

Сообщение Max Rusov » 04.09.2009 14:45:18

А что должно быть?
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Exception в потоках.

Сообщение VirtUX » 04.09.2009 15:02:33

Можно вести Лог из коротких сообщений после (перед) подозрительными участками кода, сохраняя в файл. Потом по нему отследить место сбоя.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Exception в потоках.

Сообщение dionic » 04.09.2009 15:03:38

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

Вот я и спрашиваю а в линуксе это как то можно реализовать?

Добавлено спустя 3 минуты 19 секунд:
VirtUX писал(а):Можно вести Лог из коротких сообщений после (перед) подозрительными участками кода, сохраняя в файл. Потом по нему отследить место сбоя.


Да такая мысль была только не в файл, а в свойство класса потомка TThread , например boolean и устанавливать его до и после участков подозрительного кода.
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Exception в потоках.

Сообщение Max Rusov » 04.09.2009 15:13:54

Пишете в Execute try-except и в except части реализуете логику обработки исключительной ситуации, любым удобным Вам способом. Какие проблемы то?
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Exception в потоках.

Сообщение dionic » 04.09.2009 15:16:59

Max Rusov писал(а):Пишете в Execute try-except и в except части реализуете логику обработки исключительной ситуации, любым удобным Вам способом. Какие проблемы то?


Проблем никаких =), только Вы сами пробывали так делать? Если так пишешь то до секции Except не доходит, а просто завершается...
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Exception в потоках.

Сообщение Max Rusov » 04.09.2009 15:23:58

Я, естественно, так пробовал. Правда под Windows. Вообще, надо признать, в FPC много недоработок с исключениями. Поведение существенно различается в зависимости от того внутреннее это исключение или системное, возникло оно в головном модуле или в библиотеке. Под Linux, возможно, свои тараканы. Если исключение не попадает в except часть - то его, конечно, не обработаешь. Для начала уточните - какого типа исключения у Вас возникают?
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Exception в потоках.

Сообщение dionic » 04.09.2009 15:31:37

Блин раньше под виндой не получалось исключения в потоке отловить, а сейчас отловил... Ладно надо еще раз попробывать под линуксом, если всё отловится, а не завершится то всё окей будет...Спасибо Max за ответы.
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Exception в потоках.

Сообщение Inferno » 04.09.2009 18:16:06

ммммм....
1. если запомнить TThreadID потом в другом потоке ждать с помощью WaitForThreadTerminate и реагировать по ситуации
2. если запомнить TThreadID переодически проверять открывая поток получая хенл его, только функцию не помню.
Можно даже в основном по таймеру проверки замутить
Аватара пользователя
Inferno
новенький
 
Сообщения: 78
Зарегистрирован: 20.03.2009 14:40:20
Откуда: Тюмень


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru