Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дополнительный поток и Exception в главном. Что будет?


Страницы:   1 2 3 4 5 6 7

Kolan ©   (2006-10-15 22:43:00) 

Здравствуйте,
 В программе есть доп поток. Что будет с доп. потоком если в гл. потоке произойдет Exception?


Kolan   (2006-10-15 23:06:00) [121]


> Does the flap of a butterfly’s wings in One Thread set off
> a tornado in Another Thread ?
>

Something like this :)


Kolan   (2006-10-15 23:05:00) [122]

Общий смысл который я понял при дебеге:
поток(пишу прям здесь если не то, то буду выбирать из реального кода):
while not Terminated do
 begin
   if ReadIndex >= WriteIndex then
   begin

     Suspend;
     if Terminated then
     begin

       Break;
     end;
      Synchronize(SendPackage);
           if (ReadIndex <> WriteIndex ) then
             RearrangeBuffer;
  end;


1. Если нет Exceptiona:
 После Synchronize(SendPackage); показывается окно что типа все нормально(я же ошибку закометил). Нажав на "ОК" попадаю на точку: while not Terminated do.

2. С Exception После Synchronize(SendPackage); ничего(вообще) на while not Terminated doуже не попадает.

Закрываю - "Неверный дескриптор".


guav   (2006-10-15 22:57:00) [123]

Does the flap of a butterfly’s wings in One Thread set off a tornado in Another Thread ?


Kolan   (2006-10-15 22:56:00) [124]

Synchronize(SendPackage);


Kolan   (2006-10-15 22:56:00) [125]


> "не верю!" (ц) минимальный код, демонстрирующий эту аномалию
> -- в студию.

Шас


Percent   (2006-10-15 22:55:00) [126]

Далее обработанные данные отправляются в гл. поток.

Тема механизма передачи не озвучена...


Ketmar   (2006-10-15 22:55:00) [127]

"не верю!" (ц) минимальный код, демонстрирующий эту аномалию -- в студию.


Kolan   (2006-10-15 22:54:00) [128]

Система такая полученные данные обрабатываются в доп потоке. Как только обработка закончена он засыпает. Далее обработанные данные отправляются в гл. поток. В гл потоке я проверяю корректность 1 что делаю проверяю длину:

if Length(Package) < 13 then
   raise EPackageWrongLength.Create(EPackageWrongLength.ClassName);


Так вот если длинна не верная, то:
Доходит до raise, но окно сообщением не появляется. Почему?
Зато при закрытии программы(точнее при удалении потока) выдает: "Неверный дескриптор" ...

Если Exception закаментить то все ок...


Ketmar   (2006-10-15 22:51:00) [129]

>[3] Leonid Troyanovsky(c) 15-Oct-2006, 22:47
>Зависит от плотности связи вторичного и первичного.
а, ну да. натурально. если независим -- будет работать. если чего от главного хочет... ну, не повезло тогда доппотоку. %-)


guav   (2006-10-15 22:47:00) [130]

> Что будет с доп. потоком если в гл. потоке произойдет Exception?

Ничего. Дальше полетит.


Ketmar   (2006-10-15 22:47:00) [131]

работать себе будет. пока программа не грохнется окончательно.


Leonid Troyanovsky   (2006-10-15 22:47:00) [132]


> Kolan ©   (15.10.06 22:43)  

>  В программе есть доп поток. Что будет с доп. потоком если
> в гл. потоке произойдет Exception?


Зависит от плотности связи вторичного и первичного.

--
Regards, LVT.


Страницы:   1 2 3 4 5 6 7

Наверх

Титульная страница Поиск, карта сайта Написать письмо