Форум: "Основная";
Текущий архив: 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.48 MB
Время: 0.004 c