TParallel.For()
имеет аргумент AStride
. В моем случае это 2 расставив ноги:В чем смысл AStride в TParallel.For?
TParallel.&For(2, 1, 10,
procedure(index: Integer)
begin
TThread.Queue(nil,
procedure
begin
memo1.Lines.Add(index.ToString());
end
);
end
);
Я не могу понять техническое значение «» здесь верхом. AStride = 2
означает, что первый поток будет обрабатывать два последовательных числа в диапазоне [1..10]
, второй поток будет обрабатывать следующие порядковые номера и т. Д.?
** Английский - это не мой родной язык, и я переводим «Stride» на «длинный шаг» или «темп».
Я надеюсь, что параметр, который вы ожидали от этого, будет описан и назван как шаг итерации или шаг шага (если они когда-либо его вводят). Из любопытства они используют API пула потоков на платформе Windows? – TLama
@TLama Я сомневаюсь, что они добавят такой параметр, так как программисту это легко сделать. Другие параллельные. Для реализаций выработка «шага» я считаю. Пул потоков является родным для Delphi RTL. Так что не пул системных потоков. –
Кроме того, шаг «самонастраивается». То есть когда начальное значение не задано, оно периодически увеличивается. Я думаю, что это делается для противодействия ложному совместному использованию в длинных циклах. – iamjoosy