Skip to content

Многопоточность

Ivan edited this page May 22, 2015 · 4 revisions

По-умолчанию трансформация происходит в одном потоке. Чтобы трансформация стала многопоточной, нужно создать пул потоков с помощью метода CreateThreadPool(size).

Пример:

$engine = new TurboXSLT;

my $st = $engine->LoadStylesheet($XSLT);
$st->CreateThreadPool(8);
$st->Output($st->Transform($doc));

Будет создан пул на 8 потоков.

Для управления списком инструкций, которые поддерживают параллельное выполнение, используется функция SetParallelInstructions(\@array).

Пример:

$engine = new TurboXSLT;

my $st = $engine->LoadStylesheet($XSLT);
my @instructions = ("xsl:element", "xsl:call-template");
$st->SetParallelInstructions(\@instructions);
$st->Output($st->Transform($doc));

Теперь для двух инструкций будут создаваться новые задачи.