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

Вниз

Динамическое создание потоков TThread   Найти похожие ветки 

 
ppcumax ©   (2007-06-27 20:22) [0]

Добрый день, мастера!

Подскажите, пожалуйста. Нужно создать 100 потоков класса TThread, причем на DoWork каждый поток должен выполнять одно и тоже действие. Конечно можно сделать руками, но сами понимаете..., наверное есть какой-то другой способ. Спасибо


 
oldman ©   (2007-06-27 20:27) [1]


> Динамическое создание потоков


Имхо, а какое исчо?
В дезайн-тайм???


> каждый поток должен выполнять одно и тоже действие.


А по-русски?


 
ppcumax ©   (2007-06-27 20:33) [2]

type
  TMyThread1 = class(TThread)
  private
    { Private declarations }
  protected
    procedure DoWork;
    procedure Execute; override;
  end;

  TMyThread2 = class(TThread)
  private
    { Private declarations }
  protected
    procedure DoWork;
    procedure Execute; override;
  end;

var Form1: TForm1;
    T1   : TMyThread1;
    T2   : TMyThread2;

implementation

procedure TMyThread1.Execute;
begin
  while not Terminated do
    Synchronize(DoWork);
end;

procedure TMyThread2.Execute;
begin
  while not Terminated do
    Synchronize(DoWork);
end;

procedure TMyThread1.DoWork;
begin
  Form1.CheckBox1.Checked := True;
end;

procedure TMyThread2.DoWork;
begin
  Form1.CheckBox1.Checked := False;
end;

Есть какой-то другой вариант создания потоков, что неужели только руками все писать?


 
oldman ©   (2007-06-27 20:35) [3]


> что неужели только руками все писать?


А ты думал программирование = легкая жизнь?


 
Virgo_Style ©   (2007-06-27 20:46) [4]

вообще-то есть такая штука, как циклы... а [2], я надеюсь, не из реальной программы код? %-)))


 
ppcumax ©   (2007-06-27 20:49) [5]

>я надеюсь, не из реальной программы код? %-)))

нет

>вообще-то есть такая штука, как циклы

знаю. а как тут цикл применить? покажи пример, он же не большой должен быть


 
Virgo_Style ©   (2007-06-27 20:57) [6]

ppcumax ©   (27.06.07 20:49) [5]
а как тут цикл применить?


for i:=1 to 100 do
 TMyThread.Create(...)

Но это ответ на [0], в [2] у тебя что-то совсем на [0] непохожее, а что именно - Тьма ведает.


 
ppcumax ©   (2007-06-27 21:05) [7]


> for i:=1 to 100 do  TMyThread.Create(...)


нет, ты наверно не правильно понял, мне это нужно в цикл

TMyThread1 = class(TThread)
 private
   { Private declarations }
 protected
   procedure DoWork;
   procedure Execute; override;
 end;


 
Mike Kouzmine ©   (2007-06-27 21:11) [8]

ppcumax ©   (27.06.07 21:05) [7]
for i:=1 to 100 do
begin
TMyThread1 = class(TThread)
private
  { Private declarations }
protected
  procedure DoWork;
  procedure Execute; override;
end;
end;


 
ppcumax ©   (2007-06-27 21:13) [9]

statements not allowed in interface part


 
ppcumax ©   (2007-06-27 21:18) [10]

я понимаю, что должно быть что-то вроде

for i:=1 to 100 do
begin
TMyThread[i] = class(TThread)
private
 { Private declarations }
protected
 procedure DoWork;
 procedure Execute; override;
end;
end;

но где и как прописать не знаю


 
DrPass ©   (2007-06-27 21:18) [11]


>   while not Terminated do
>     Synchronize(DoWork);

Впечатлило. Ты уверен, что тебе действительно потоки нужны?


> statements not allowed in interface part

А не надо воспринимать все буквально. Тут творческий подход нужен


 
Mike Kouzmine ©   (2007-06-27 21:19) [12]

ppcumax ©   (27.06.07 21:13) [9] А у тебя какой делбфи?


 
DrPass ©   (2007-06-27 21:20) [13]


> я понимаю, что должно быть что-то вроде
>
> for i:=1 to 100 do
> begin
> TMyThread[i] = class(TThread)
> private
>  { Private declarations }
> protected
>  procedure DoWork;
>  procedure Execute; override;
> end;
> end;

Видишь ли, есть два тупейших способа писать программы.
а) пытаться подставлять умные слова наугад
б) просить "приведите пожалуйста код"

...и всего один умный - почитать основы языка, и подумать головой


 
ppcumax ©   (2007-06-27 21:22) [14]


> А у тебя какой делбфи?


Delphi 7


> почитать основы языка, и подумать головой


Об этом нигде не пишется. Рассказывают только как делать потоки "руками"


 
DrPass ©   (2007-06-27 21:24) [15]


> Об этом нигде не пишется

Везде пишется. TThread - это обычный класс. Все, что применимо для обычных классов, применимо и для TThread. И только не говори, что ты не можешь найти доку, в которой написано как создать N экземпляров одного класса


 
Однокамушкин   (2007-06-27 21:24) [16]

Зачем вам помещать в цикл объявление класса? Объявление класса - это что-то типа чертежа, по которому потом изготавливаются объекты... Ну и зачем вам сто одинаковых чертежей, если и по оному чертежу вы можете изготовить столько объектов, сколько нужно? Как это делается, написано в [6]...


 
ppcumax ©   (2007-06-27 21:26) [17]


> найти доку, в которой написано как создать N экземпляров
> одного класса


Буду благодарен если подскажите статью, мануал


 
Mike Kouzmine ©   (2007-06-27 21:30) [18]

ppcumax ©   (27.06.07 21:22) [14]

> А у тебя какой делбфи?

Delphi 7

Это ты рано. Начни с 3го. И обрати внимание на основы языка.


 
ppcumax ©   (2007-06-27 21:32) [19]


> Это ты рано. Начни с 3го. И обрати внимание на основы языка.


Неужели так трудно дать пример ?


 
Johnmen ©   (2007-06-27 21:32) [20]


> Буду благодарен если подскажите статью, мануал

Вот, не совсем мануал, да и классов не N, а только 100 - [6].


 
Однокамушкин   (2007-06-27 21:33) [21]


> ppcumax ©   (27.06.07 21:26) [17]
> Буду благодарен если подскажите статью, мануал


Да в [6] уже всё написано...


> Mike Kouzmine ©   (27.06.07 21:30) [18]
> Это ты рано. Начни с 3го.

Да ладно, хватит над человеком издеваться :)))))) Он ещё не знает, в чём разница между 3-им и 7-ым и может воспринять всё всерьёз...


 
Johnmen ©   (2007-06-27 21:33) [22]

...да и экземпляров класса не N,...


 
SpellCaster   (2007-06-28 10:31) [23]

> [16] Однокамушкин   (27.06.07 21:24)
Не мешай, здесь вершится коллективное избиение нуба...


 
homm ©   (2007-06-28 10:54) [24]

> нет, ты наверно не правильно понял, мне это нужно в цикл

Это ты не правильно понял. Зачем тебе 100 классов потока? Тебе нужно 100 его экземпляров.


 
Однокамушкин   (2007-06-28 11:01) [25]


> SpellCaster   (28.06.07 10:31) [23]
> Не мешай, здесь вершится коллективное избиение нуба...

А что такое "нуб"? Много раз уже встречал, общий смысл слова понятен, но что конкртено...


 
Сергей М. ©   (2007-06-28 11:11) [26]


> что такое "нуб"?


http://forum.l2server.ru/index.php?s=afce4c215fafe7503f723138fc52149c&showtopic=18492&pid=190840&st=0&#en try190840



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

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.023 c
15-1182241477
Makhanev Alexander
2007-06-19 12:24
2007.07.22
Заюзать общие conditional parameters...


11-1165408011
Don
2006-12-06 15:26
2007.07.22
ошибка в WndProcGradientEx


15-1182541836
ArtemESC
2007-06-22 23:50
2007.07.22
Спамеры уже добрались до телефонов...


15-1178181667
Steep
2007-05-03 12:41
2007.07.22
Как отговорить ставить линуксы?


2-1182939554
zvm
2007-06-27 14:19
2007.07.22
как проще сделать примитивную 3D графику?