THotPDF.RenderLoadedPagesParallelOrdered Method
Kompilerer og rendere lastede sider samtidig mens fullførte bitmap leveres i innmatingsrekkefølge gjennom en avgrenset callback på den kallende tråden
Erklæring
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 eierskap
Callback kjører serielt på den kallende tråden med nullbasert innmatingsposisjon, forespurt sideindeks, lånt bitmap og avbrytingsflagg
Bitmapet er bare gyldig i callbackperioden og frigjøres umiddelbart etter at callbacken returnerer, så kopier eller kod det inni callbacken når resultatet må leve lenger enn invokasjonen
Sett Cancel for å stoppe krav på nye sider, vekke blokkerte arbeidere, slutte seg til pågående arbeid, frigjøre upubliserte resultater og returnere antall fullførte callbacker
Callback-avbryting vekker også workere som venter på en minnereservasjon, uten at den interne vekkingen blir til en feil; en ekstern avbrytingstoken eller et callback-unntak rapporteres fortsatt som feil etter opprydding
Mottrykk
OutputQueueDepth avgrenser fullførte bitmap inkludert bitmapet som er aktivt i callbacken; verdier under én velger det effektive arbeiderantallet, og verdier over sideantallet begrenses
Planleggeren reserverer utdatakapasitet for neste nødvendige innmatingsposisjon, så senere sider kan ikke fylle køen og blokkere ordnet fremgang når en tidligere side kompileres saktere
Med PeakMemorySchedulerEnabled reduseres forespurt parallellitet fra det største sideestimatet og det tilgjengelige globale budsjettet, og hver sidereservasjon forblir aktiv fra arbeidskrav til det lånte bitmapet forlater callbacken
Minnereservasjoner forespørres i innmatingsrekkefølge før parallell kompilering og rendering, så senere sider kan ikke ta budsjettet som neste callback trenger
Køet utdata konkurrerer derfor rettferdig med aktiv kompilering og avspilling om samme prosessvide budsjett, mens avbryting eller feil frigjør upubliserte reservasjoner før arbeidere slås sammen
Callbacken må ikke endre eller frigjøre dokumentet mens workers er aktive
THPDFParallelRenderPipelineInfo · Display Lists and Print Production