Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1109018851
Object
2005-02-21 23:47
2005.03.06
Создание функций Undo и Redo.


4-1106136207
YV
2005-01-19 15:03
2005.03.06
Запрет принудительного завершения процеса


8-1100614636
denis24
2004-11-16 17:17
2005.03.06
Tbitmap...Tjpeg


1-1109005778
Igor_thief
2005-02-21 20:09
2005.03.06
Снова про написание вируса (учебного), и снова продолжение темы.


14-1108368694
stone
2005-02-14 11:11
2005.03.06
Lord of The Rings: Battle for middle Earth





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский