Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизПотоки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c