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