Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Вниз

Опять потоки. Круговорот. 


Ura   (2002-02-01 18:37) [0]

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



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

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



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

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



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

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



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

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:24) [5]

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



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

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-04 11:26) [7]

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



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

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

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

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



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

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




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.026 c
1-57107           Lotus                 2002-02-02 13:53  2002.02.18  
about TMemo


14-57219          -=CrazyFish=-         2001-12-26 14:58  2002.02.18  
Аппаратный эмулятор для микропроцессоров семейства 8ХС51


3-57011           wicked                2002-01-24 13:55  2002.02.18  
виды курсоров в ADO


14-57199          Knight                2001-12-28 11:58  2002.02.18  
Всех с праздниками, вопросик несколько хакерский но просто срочно понадобилось!!!


1-57073           Злой_Гном             2002-02-01 18:23  2002.02.18  
Все, про ProgressBar дотумкал :-)))