THotPDF.RenderLoadedPagesParallelOrdered Method
Kompilerer og gengiver indlæste sider samtidig og leverer fuldførte bitmaps i inputrækkefølge gennem en afgrænset callback på kaldetråden
Deklaration
function RenderLoadedPagesParallelOrdered(
const PageIndices: array of Integer; DPI, MaxConcurrency,
OutputQueueDepth: Integer; Callback: THPDFParallelRenderPageEvent): Integer; overload;
function RenderLoadedPagesParallelOrdered(
const PageIndices: array of Integer; DPI, MaxConcurrency,
OutputQueueDepth: Integer; Callback: THPDFParallelRenderPageEvent;
out Info: THPDFParallelRenderPipelineInfo): Integer; overload;
Callback og ejerskab
Callback kører seriel på kaldetråden med den nulbaserede inputposition, det anmodede sideindeks, den lånte bitmap og annulleringsflaget
Bitmapen er kun gyldig, mens callbacken kører, og frigives straks efter, at callbacken returnerer, så kopiér eller kod den inde i callbacken, når resultatet skal leve videre efter kaldet
Sæt Cancel for at stoppe claim af nye sider, vække blokerede workers, joine igangværende arbejde, frigive upublicerede resultater og returnere antallet af fuldførte callbacks
Callback-annullering vækker også workers, der venter på en hukommelsesreservation, uden at denne interne vækning bliver til en fejl; et eksternt annulleringstoken eller en callback-exception rapporterer stadig fejl efter oprydningen
Backpressure
OutputQueueDepth begrænser antallet af fuldførte bitmaps, inklusive bitmapen, der er aktiv i callbacken; værdier under ét vælger det effektive worker-antal, og værdier over sideantallet klembes
Scheduleren reserverer outputkapacitet til den næste påkrævede inputposition, så senere sider ikke kan fylda køen og blokere den ordnede fremdrift, når en tidligere side compiler langsommere
Med PeakMemorySchedulerEnabled reduceres den anmodede parallelisme ud fra det største sideestimat og den aktuelt tilgængelige globale budget, og hver sidereservation forbliver aktiv fra claim af arbejdet, til dens lånte bitmap forlader callbacken
Hukommelsesreservationer anmodes i inputrækkefølge, før parallel kompilering og rendering, så senere sider ikke kan tage budgettet, som den næste callback har brug for
Kølagt output konkurrerer derfor fair med aktiv kompilering og afspilning om det samme procesomfattende budget, mens annullering eller fejl frigiver upublicerede reservationer, inden workers joines
Callbacken må ikke mutere eller ødelægge dokumentet, mens workers er aktive
THPDFParallelRenderPipelineInfo · Displaylister og trykproduktion