Вниз
Скачать: CL | DM;

Потоки   Найти похожие ветки 

 
BVV   (2005-02-23 15:39) [0]

Помогите справиться с потоками, требуется создать одновременно четыре независимых потока p1,p2,p3,p4,  каждый и которых получает по два разных массива чисел, для p1-М1 и N1, p2-M2 и N2, p3-M3 и N3, p4-M4 и N4  (для разных потоков набор чисел в массивах разный), осуществляет построковое перемножение чиссел массивов и выводит результат в мемо1, memo2, memo3, memo4. Причем работа потоков не должна ни как влиять друг на друга.


 
Александр Иванов ©   (2005-02-23 15:52) [1]

Здесь задают вопросы, в чем твой вопрос?


 
Юрий Зотов ©   (2005-02-23 15:55) [2]

type
 TArray = array of тип_числа;
 TMyThread = class of TThread;
 private
   FM: TArray;
   FN: TArray;
   FMemo: TMemo;
   procedure ShowResults;
 protected
   procedure Execute; override;
 public
   constructor Create(M, N: TArray; Memo: TMemo);
   destructor Destroy; override;
 end;

constructor TMyThread.Create(M, N: TArray; Memo: TMemo);
begin
 inherited Create(True);
 SetLength(FM, Length(M));
 Move(M[0], FM[0], Length(M));
 SetLength(FN, Length(N));
 Move(N[0], FN[0], Length(N));
 FMemo := Memo;
 FreeOnTerminate := True;
 Resume
end;

destructor TMyThread.Destroy;
begin
 FN := nil;
 FM := nil;
 inherited
end;

procedure TMyThread.Execute;
begin
 ... // Обработка массивов FM и FN
 Synchronize(ShowResults)
end;

procedure TMyThread.ShowResults;
begin
 ... // Вывод результатов в FMemo
end;

И все. Теперь вызываете конструктор хоть 4, хоть 104 раза, а в его параметрах указываете массивы-источники данных и Memo-приемник результатов.


 
Юрий Зотов ©   (2005-02-23 15:58) [3]

Уточнение: конечно же, вместо
 Move(M[0], FM[0], Length(M));
нужно писать
 Move(M[0], FM[0], Length(M) * SizeOf(тип_числа));

И то же самое для N.


 
Юрий Зотов ©   (2005-02-23 16:08) [4]

Еще уточнение:
TArray = packed array of тип_числа;
Хотя говорят, что на практике это одно и то же.


 
begin...end ©   (2005-02-23 17:21) [5]

> BVV   (23.02.05 15:39)

См. также: {Delphi}\Demos\Threads.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
6-1104497406
BVV
2004-12-31 15:50
2005.03.06
TIdTCPConnection.WriteStream


4-1106322348
BaDeVlad
2005-01-21 18:45
2005.03.06
Как поменять пароль Screen saver a?


1-1109094700
mr-jack
2005-02-22 20:51
2005.03.06
перестановка StringGrid


14-1108557792
1008
2005-02-16 15:43
2005.03.06
Что бы это могло быть?


14-1108127746
DSmale
2005-02-11 16:15
2005.03.06
StyleXP




   Наверх