Главная страница
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.06 c
3-1107422213
Term
2005-02-03 12:16
2005.03.06
Безопасность MS SQL


6-1103436842
Grafsky
2004-12-19 09:14
2005.03.06
Разбор XML


4-1106069492
Sicilla
2005-01-18 20:31
2005.03.06
Показать диалог Dial-up


1-1108834889
Aldor
2005-02-19 20:41
2005.03.06
Многомерные open array parameters


1-1109004521
Viktop
2005-02-21 19:48
2005.03.06
Как затенить кнопку закрыть