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