![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 24.11.2007
Сообщений: 20
|
![]()
Подскажите, плз, как сделать!
Есть модуль потока команд. В теле программы (в основном потоке) я хочу запустить 3 потока (с разными параметрами на входе), чтоб они работали параллельно. Как это реализовать? |
![]() |
![]() |
![]() |
#2 |
Форумчанин Подтвердите свой е-майл
Регистрация: 20.11.2007
Сообщений: 500
|
![]()
Статья из справочника! Прочитай!!
|
![]() |
![]() |
![]() |
#3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 20.11.2007
Сообщений: 500
|
![]()
А вообще тебе наверное надо 3 потока...
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 24.11.2007
Сообщений: 20
|
![]()
Больше. Их количество определяется исходными данными программы (числом строк Memы)
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 24.11.2007
Сообщений: 20
|
![]()
За пример спасибо, но его я и сам читал в книжке Фаронова...
Видимо, я не совсем точно объяснил, чего я хочу. Суть в том, что поток я создал. С конструктором и процедурами. Те из них, которые меняют визуальные компоненты главной формы вызываются в MyTheard.Execute через Synchronize. Примерно так: unit Unit4; interface uses Classes; type TTh = class(TThread) private procedure Work; procedure Start; procedure Stop; { Private declarations } public constructor Create(Var1: String; Var2: integer); protected procedure Execute; override; end; implementation Uses Unit1,Classes; constructor TTh.Create(Que: String; Number: integer); begin inherited Create(True); FreeOnTerminate:= True; Question:= Que; Num:= Number; Priority:= tpNormal; end; procedure TTh.Execute; begin { Place thread code here } Synchronize(Start); While (Not Terminated) Do Synchronize(Work); Synchronize(Stop); end; procedure TTh.Work; begin некие действия, использующие компоненты главной формы end; procedure TTh.Start; begin сообщение в форму о старте потока end; procedure TTh.Stop; begin сообщение в форму о финише потока end; end. Вопрос в том, как заставить работать ну, скажем, 5 таких потоков одновременно. Так не получается: For i:= 0 To Num-1 Do Begin Th[i]:= TTh.Create(Question,i); Th[i].Resume; End; А как надо? Последний раз редактировалось Adm; 18.01.2008 в 18:32. |
![]() |
![]() |
![]() |
#6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
А где объявление массива потоков Th[i] ?
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 24.11.2007
Сообщений: 20
|
![]() Оно сделано в основной программе: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, Unit2, Unit4, ActnList, StdActns, SHDocVw_EWB, EwbCore, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, ComCtrls, Grids; type TForm1 = class(TForm) ... private Th: array[0..9] of TTh; { Private declarations } public Num : Byte; { Public declarations } end; var Form1: TForm1; implementation ... |
![]() |
![]() |
![]() |
#8 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
"Содержимое секции PRIVATE невидимо за пределами юниты, в которой оно объявлено." Кто вас научил спрятать, вместо того, чтобы расшарить? |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 24.11.2007
Сообщений: 20
|
![]()
А мне и не нужно, чтобы элементы массива Th[i] были видны за пределами Unit1!
|
![]() |
![]() |
![]() |
#10 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Глобальны переменные для потоков | PM85 | Общие вопросы C/C++ | 3 | 15.04.2008 18:12 |
Использование потоков | Repz | Общие вопросы Delphi | 6 | 25.01.2008 14:20 |
Перенаправление потоков | Carbon | Win Api | 5 | 25.11.2007 14:46 |
Дескрипторы потоков - Для каждого элемента списка необходимо создать поток, выполняющий требуемые функции | kdv0403 | Общие вопросы Delphi | 2 | 09.06.2007 11:12 |