Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];

Вниз

Снова я и снова торможу   Найти похожие ветки 

 
Eraser   (2002-01-03 15:40) [0]

Вопрос упрощу до примитива: Как сделать чтобы работало 6 одинаковых процессов одновременно с использованием таймера в каждом процессе(с фреймами не работает- фрейм создается только один в один момент времени и таймер у него тоже один)


 
Незнайка   (2002-01-03 15:53) [1]

Рискну посоветовать тебе использовать библиотеку работы с потоками GALA - Сергея Томского. Очень интересная вещь и пока малоглючная - :-)

По-крайней мере, если раньше не занимался распараллеливанием много поймешь. )))

Удачи.

P.S. да - ссылочка -> www.dps.aeed.tpu.edu.ru/gurin/gala/index.htm


 
Mikh_Dmit   (2002-01-03 22:34) [2]

ну а если как-нибудь по другому. ведь если я два раза переписываю один и тот же код то все работает одновременно


 
Незнайка   (2002-01-04 11:12) [3]

??? Что значит - "... если я два раза переписываю один и тот же код то ..."

Можно поконкретнее вопрос....тебе требуется одновременно из разных процессов работать с разными участками одного "телевизора" ? Я правильно понял ? )))
Если это так.....то все Ж Вам, батенька я опять советую ту-же библиотеку..потому-шта ), в противном случае Вы снова будете изобретать велосипед.... Поверьте старому и больному программеру который "растаскивал" процессы еще на Эльбрусе )))


 
panov   (2002-01-04 11:19) [4]

>Eraser (03.01.02 15:40)
Из твоего вопроса непонятно, что ты хочешь получить в итоге.
Ты не упрости вопрос, а конкретизируй.


 
Eraser   (2002-01-04 23:50) [5]

Ну вопрос о процессах зашел не сразу. Задача была такая сделать непрерывный !!!! опрос 8 портов причем обработка сигналов из порта и посылка в порт формируются по одному алгоритму но ответ - в разные массивы. Была попытка сделать через фрейм (8 фреймов на форме) но пока идет непрерывный опрос через один фрейм другие НЕ РАБОТАЮТ. Получилось только через таймеры т.е. перерыв через промежуток и запускается второй фрейм.HELP как???


 
Tosov   (2002-01-04 23:58) [6]

Может тебе надо TThread


 
ctapik-net   (2002-01-05 10:54) [7]

Блин создаешь свой тип потока, при инициализации подаешь идентификатор порнта с которым он будет работать, запускаешь. Поток отработав посылает программе сообщение через SendMessage где описан идентификатор порта с которым он работал и выходные значения. Вот и все.


 
Mikh_Dmit   (2002-01-05 16:54) [8]

а если бе TTHread


 
ctapik-net   (2002-01-05 17:39) [9]

Такого не бывает чтобы без TTHread и работало паралельно!


 
DK   (2002-01-06 05:24) [10]

Паралельно вообще не бывает (разве что на 2 компах).
Конвейерная архитектура всё-таки.
Но TThread в данном случае - реальная альтернатива.


 
Mikh_Dmit   (2002-01-06 14:10) [11]

ну хорошо Thread так Thread. Но как мне лучше сделать : ведь насколько я понимаю я не могу создать поток в фрейме и мне придется создавать поток для каждого фрейма в основной программе. Или я в чем то не прав???


 
panov   (2002-01-06 19:11) [12]

>Mikh_Dmit (06.01.02 14:10) или eraser.

TThread не относится к какой либо форме или любому визуальному компоненту.
Дочерние потоки создаются в основном потоке и все потоки работают в контексте основного процесса.
Каждый процесс создается для выполнения определенной задачи.
В твоем случае создается 8 потоков, каждый из которых предназначет для обслуживания одного порта.
Внутри потока тебе нужно только лишь отображать некие данные.
Какой визуальный объект ты будешь изменять - абсолютно безразлично.
У тебя это фреймы, т.е. каждому потоку назначаешь свой фрейм для отображения(а не фрейму назначаешь поток).
Создаешь 8 потоков, каждый обновляет свой фрейм.


 
Mikh_Dmit   (2002-01-06 22:47) [13]

ну более менее все понятно. Последний вопрос как мне передать управление фрейму или мне необходимо вызывать каждую процедуру в отдельности? У меня ведь фрейм немаленький - несколько таймеров , несколько кнонок и т.д.


 
panov   (2002-01-06 23:33) [14]

В DELPHI есть пример сортировки в потоках.
По аналогии можешь сделать.
Абсолютно безразлично, что у тебя находится на фреймах.


 
Eraser   (2002-01-07 22:24) [15]

В этом примере все понятно: создаются потоки каждый для обработки своей процедуры. Но у меня ведь все процедуры одинаковое т.к. фрейм 1 (или я чего то не до конца понимаю с фреймами). Ведь все равно потоки я должен организовать в основной форме а не в фрейме чтобы свсе работало? Если я пишу такой примитивный код:
procedure Thread1.Execute;
begin
Frame1.Timer1Timer(Sender);
end;
procedure Thread2.Execute;
begin
Frame2.Timer1Timer(Sender);
end;
то ничего не работает!!!! Как поступить именно с 1-м фреймом и несколькими потоками которые используют этот фрейм??


 
Eraser   (2002-01-08 16:45) [16]

ау


 
panov   (2002-01-08 16:55) [17]

Давай я тебе вышлю пример программы с потоками и комментариями, сам попытаешься разобраться...


 
Eraser   (2002-01-08 17:23) [18]

если тебе не трудно то буду признателен :dimit@mailru.com заранее спасибо


 
ctapik-net   (2002-01-08 20:24) [19]

procedure Thread1.Execute;
begin
Frame1.Timer1Timer(Sender);
end;
procedure Thread2.Execute;
begin
Frame2.Timer1Timer(Sender);
end;

Кто ж так делает! Это нарушает принципы ООП! Правельнее будет послать сообшение через SendMessage. Кстати а у ты Create с каким параметром вызываешь True или False? Чтобы поток небедленно запустить на выполнеение надо вызвать по-моему с False.



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

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

Наверх





Память: 0.61 MB
Время: 0.027 c
14-75662
Undertaker
2001-11-28 16:55
2002.01.24
Кто знает JAVA - помогитеееееее !


7-75703
Dratvik
2001-10-09 18:35
2002.01.24
Можно ли как-то сделать файл на диске невидимым для Explorer и других


3-75477
Mike_
2001-12-19 16:55
2002.01.24
Ячейки в DBGrid


6-75642
BeepCheck
2001-10-29 21:09
2002.01.24
html сохранить в файл


1-75588
Tuk
2002-01-03 19:42
2002.01.24
Мастера, подскажите, отчет не помещается по ширине на лист с альбомной ориентацией как его можно разарезать?





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