Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.059 c
14-1108391307
Anonimus
2005-02-14 17:28
2005.03.06
.inf Файлы. Как писать?


14-1108648310
diww
2005-02-17 16:51
2005.03.06
организация мальчишника


1-1108668519
Redhopter
2005-02-17 22:28
2005.03.06
Приведение типов


10-1085723911
Punker
2004-05-28 09:58
2005.03.06
Выбрать лист в Excel?


3-1107857897
dreamse
2005-02-08 13:18
2005.03.06
проблема с сохранением базы