Цитата:
Сообщение от genna29
вопрос в том, как передать данные для обработки в виде массива из TMyRecord1 в поток MyTh2,
если он локален в первом потоке...
|
Локальные данные тут не подойдут. Нужно эти локальные данные скопировать из первого потока (MyTh1) в поле второго потока (MyTh2) и с этими данными второй поток и будет работать.
Ещё первый поток может выделить память под данные, заполнить и передать ссылку на этот участок памяти второму потоку, но при этом этот первый поток должен "отказаться" от этих данных, а второй поток после обработки данных должен не забыть освободить память отведённую под них.
Цитата:
Сообщение от genna29
Код:
Procedure MyTh2.execute;
var
cs:tcriticalsection;
begin
cs:=tcriticalsection.create;
while i<arraylength do
begin
cs.enter;
inc(i);
cs.leave;
//здесь надо обработать массив target2
//и записать результаты в массив result,
//общий для всех потоков...
end;
cs.free;
end;
|
Для записи результатов в общий массив используй синхронизацию.