THotPDF.RenderLoadedPagesParallel Method
Potokuje kompilację i odtwarzanie display-list na ograniczonej liczbie workerów, zachowując kolejność wejściową w tablicy wynikowej
Deklaracja
function RenderLoadedPagesParallel(const PageIndices: array of Integer;
DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray): Integer; overload;
function RenderLoadedPagesParallel(const PageIndices: array of Integer;
DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray;
out Info: THPDFParallelRenderPipelineInfo): Integer; overload;
Zachowanie
Kompilacja działa poza blokadą cache display-list, więc niepowiązane strony mogą być kompilowane współbieżnie, a pierwsza gotowa strona może zacząć się renderować, zanim całe wejście zostanie skompilowane
Scheduler dynamicznie równoważy pracę kompilacji i odtwarzania, ogranicza liczbę workerów do MaxConcurrency, izoluje stan renderera per worker i współdzieli wpisy cache przez chronione liczniki użyć
Gdy PeakMemorySchedulerEnabled jest true, efektywna liczba workerów jest redukowana z znormalizowanego żądania na podstawie największego szacunku strony i aktualnie dostępnego globalnego budżetu, a każda przyznana strona trzyma własną sprawiedliwą rezerwację pamięci przez kompilację i odtwarzanie
Wariant z Info raportuje żądane i efektywne workery, limit workerów wynikający z pamięci, szacunki rezerwacji stron, szczytową liczbę zarezerwowanych bajtów renderu, przyjęcia przez scheduler, opóźnione strony, czas oczekiwania, liczniki kompilacji i trafień w cache, ukończone wyjście, szczytową współbieżność etapów, opóźnienie pierwszego wyniku, całkowity czas oraz liczbę stron skompilowanych w chwili ukończenia pierwszej bitmapy
Każda nie-nilowa bitmapa w Bitmaps pozostaje własnością wywołującego
Ukończone wyniki w tablicy pozostają własnością wywołującego po zwolnieniu swoich rezerwacji w toku, więc gdy cały zestaw wyjściowy ma mieścić się w budżecie schedulera, użyj RenderLoadedPagesParallelOrdered
THPDFParallelRenderPipelineInfo · Listy wyświetlania i produkcja poligraficzna