Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.24;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
6-75645
Diamond Sirus Ringer
2001-10-29 15:06
2002.01.24
Проблемы клиент-сервеных приложений на основе сокетов


1-75582
Delphimun
2002-01-06 18:46
2002.01.24
Отображение приложения в Ctrl+Alt+Delete


3-75484
Delirium
2001-12-19 16:44
2002.01.24
RecordSet - > Paradox


7-75700
3d[Power]
2001-10-11 20:39
2002.01.24
Трэкбар


14-75685
lel
2001-11-28 10:54
2002.01.24
Никто не знает ресурсов, где выложены, спрайты, текстуры к разным и грам и не только????