Главная страница
    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-57077
Rad
2002-01-31 19:19
2002.02.18
Сервер приложений DCOM


1-57126
Lotus
2002-02-03 12:01
2002.02.18
индекс строки в TMEMO


3-56993
AnIg
2002-01-23 15:04
2002.02.18
Мягкое удаление записей таблиц DBASE


14-57202
MJH
2001-12-28 12:59
2002.02.18
Scooter - Ramp


1-57138
KvORubin
2002-02-03 18:39
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский