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

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

Опять потоки. Круговорот. [D6, Win95/98]


Ura ©   (2002-02-01 18:37:00) 

Задача усложнилась.
Поток Р1 стартует поток Р2 и РазрушаетсЯ. Р2 - при определенных условиях СоздаеТ и СтартуеТ Р1 а тот опять перезапускает Р2.
Конфликта не будет при создании Р1 если он вызывется раньше чем, уничтожиться Р1. Получиться 2 экземпляра. А нам ненадо.
Или не разрушать Р1. Но мне не хочеться отлеживать уже два потока в системе... Не нужен нам первый поток все время...


Ura   (2002-02-04 14:03:00) [1]

> NailS ©
НЕ хочу доказывать, что схема самая правильная.
Просто проговаривая ее словами получилось у меня именно так.
Разные функции, разные объекты и разное время жизни... этим и определил схему работы.... А через третий поток Я хотел изначально сделать... Но ПОКА думаю, что он лишний...
В общем я рад, что есть идеи и ими деляться...


NailS   (2002-02-04 12:46:00) [2]

Как вариант,
Задействуй 3-й объект, который занимается тем что отслеживает какие потоки у тебя запущены и стартует - стопорит их в зависимости от обстоятельств. Жить он может в VCL-ом потоке.
А схема работы примерно такая :
1. При старте приложения создаешь управляющий объект.
2. Он поднимает поток установления коннекта Р1.
3. Р1 устанавливает коннект, у сообщает управляющему объекту
что коннект установлен (PostMessage, Event)
4. Управляющий объект убивает Р1, поднимает поток Р2, который занимается своим делом. Если при отправке обновления возникает ошибка Р2 информирует об этом управляющий объект, тот действует в зависимости от ситуацию.

Разделяй и властвуй, говоришь ;).

Но если честно, схема не правильная ИМХО,
Следить за коннектом и отправлять данные на сервер должен один поток, а второй должен эти данные формировать и передавать первому.


Ura   (2002-02-04 11:26:00) [3]

Дополняю. Р1 делает еще - опрос устройств, проверки + незнаю пока что, но только то, что надо при инициализации системы.
А Р2 - только спроверяет коннект и если обрыв - то переводит систему в перенинициализацию... т.е. запускает Р1.
Вообще-то уже реализовал.


yaJohn   (2002-02-01 19:29:00) [4]

Znachit tak:
P1 startoval i jdet connecta s serverom. Koli takovoy est" - rabotaem s serverom.
Vopros. Zachem zavershat" P1 esli posilat" obnovlenia na server mojno priamo iz nego? I P2 ne nujen...
>опрос сервера на соннеск только при старте и запуск Р2 если все
ne soglasuetsia s
>Р2 - при определенных условиях СоздаеТ и СтартуеТ Р1

Vnesite yasnost", plzs.


Ura   (2002-02-01 19:24:00) [5]

Р1 - опрос сервера на соннеск только при старте и запуск Р2 если все ОК
Р2 - посылка обновление на сервер каждые 5 минут...
Разделяй и властвуй ;-).


yaJohn   (2002-02-01 19:13:00) [6]

Ya, chestno govoria ne ochen ponial, chto doljno poluchitsia v itoge... Pochemu ne sozdavat" noviy ekzempliar P2 iz sebia samogo? Esli P1 tolko tem i zanimaetsia chto startuet P2 i zavershaetsia, to nujen li on?


Ura   (2002-02-01 19:06:00) [7]

P1 и Р2 как OC-объект...


Digitman   (2002-02-01 18:44:00) [8]

Что подразумевается в дан.случае под P1 и P2 ? Поток как VCL-объект или поток как OC-объект ?


panov   (2002-02-01 18:42:00) [9]

Можно создавать семафор или ATOM в конструкторах потоков и отслеживать их.


Наверх

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