Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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 ©
НЕ хочу доказывать, что схема самая правильная.
Просто проговаривая ее словами получилось у меня именно так.
Разные функции, разные объекты и разное время жизни... этим и определил схему работы.... А через третий поток Я хотел изначально сделать... Но ПОКА думаю, что он лишний...
В общем я рад, что есть идеи и ими деляться...



Страницы: 1 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.004 c
14-57210
Knight
2001-12-29 11:15
2002.02.18
Люди, никто не в курсе, чё с Майл.ру?


1-57140
Lion
2002-02-03 19:54
2002.02.18
StringGrid


4-57272
ВС
2001-12-19 12:58
2002.02.18
Может это уже спрашивали, но осмелюсь спросить еще раз!


6-57172
Саша.Ру
2001-11-25 20:09
2002.02.18
Соединение по протоколу HTTPs


3-56983
cahek2000
2002-01-23 14:28
2002.02.18
RxDBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский