Главная страница
    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
1-57144
daos
2002-02-01 09:07
2002.02.18
Закрытие формы


1-57070
Ura
2002-02-01 16:53
2002.02.18
Потоки


7-57235
Русский
2001-11-12 14:22
2002.02.18
Поделитесь кодом а :)))


1-57048
Елена
2002-02-04 11:52
2002.02.18
Гориз. полоса прокрутки в ComboBox


4-57240
BDRON
2001-12-18 16:30
2002.02.18
Закрыть другую программу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский