THotPDF.RenderLoadedPagesParallelOrdered Method

Kompilerar och renderar inlästa sidor samtidigt samtidigt som slutförda bitmappar levereras i inmatningsordning genom ett avgränsat återanrop på anropstrå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;

Återanrop och ägarskap

Callback körs seriellt på anropstråden med det nollbaserade inmatningsläget, det begärda sidindexet, den lånade bitmappen och avbrytningsflaggan

Bitmappen är giltig endast under återanropets varaktighet och frigörs omedelbart efter att återanropet returnerar, så kopiera eller koda den inuti återanropet när resultatet måste överleva den anropningen

Ställ in Cancel för att sluta anspråka nya sidor, väcka blockerade arbetare, gå med i pågående arbete, frigöra opublicerade resultat och returnera antalet slutförda återanrop

Återanropsavbrytning väcker även arbetare som väntar på en minnesreservation, utan att göra den interna uppväckningen till ett fel; en extern avbrytningstoken eller ett återanropsundantag rapporterar fortfarande fel efter städningen

Mottryck

OutputQueueDepth begränsar slutförda bitmappar inklusive bitmappen som är aktiv i återanropet; värden under ett väljer det effektiva arbetarantalet och värden över sidantalet kläms

Schemaläggaren reserverar utmatningskapacitet för nästa krävda inmatningsposition, så senare sidor kan inte fylla kön och blockera ordnad framsteg när en tidigare sida kompilerar långsammare

Med PeakMemorySchedulerEnabled reduceras den begärda parallelliteten från den största siduppskattningen och den för närvarande tillgängliga globala budgeten, och varje sidreservation förblir aktiv från arbetsanspråk tills dess lånade bitmapp lämnar återanropet

Minnesreservationer begärs i inmatningsordning före parallell kompilering och rendering, så att senare sidor inte kan konsumera den budget som nästa återanrop behöver

Köad utmatning tävlar därför rättvist med aktiv kompilering och uppspelning om samma processomfattande budget, medan avbrytning eller fel frigör opublicerade reservationer innan arbetarna gås med

Återanropet får inte mutera eller förstöra dokumentet medan arbetare är aktiva

THPDFParallelRenderPipelineInfo · Displaylistor och tryckproduktion