THotPDF.RenderLoadedPagesParallelOrdered Method
Compileert en rendert geladen pagina's gelijktijdig terwijl voltooide bitmaps in invoervolgorde worden geleverd via een begrensde callback op de aanroepende thread
Declaratie
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 en eigendom
Callback wordt seriëel uitgevoerd op de aanroepende thread met de invoerpositie met nulbasis, de opgevraagde pagina-index, de geleende bitmap en de annuleringsvlag
De bitmap is alleen geldig tijdens de callback en wordt direct vrijgegeven nadat de callback terugkeert, dus kopieer of codeer deze binnen de callback wanneer het resultaat die aanroep moet overleven
Stel Cancel in om het claimen van nieuwe pagina's te stoppen, geblokkeerde werkers te wekken, lopend werk af te ronden, ongepubliceerde resultaten vrij te geven en het aantal voltooide callbacks terug te geven
Annulering via de callback wekt ook werkers die wachten op een geheugenreservering, zonder die interne wakeup tot een fout te maken; een extern annuleringstoken of een callback-uitzondering meldt na de opruiming nog steeds een fout
Terugdruk
OutputQueueDepth begrenst voltooide bitmaps inclusief de bitmap die actief is in de callback; waarden onder één kiezen het effectieve aantal werkers en waarden boven het pagina-aantal worden bijgesteld
De planner reserveert uitvoercapaciteit voor de volgende vereiste invoerpositie, zodat latere pagina's de wachtrij niet kunnen vullen en geordende voortgang kunnen blokkeren wanneer een eerdere pagina langzamer compileert
Met PeakMemorySchedulerEnabled wordt gevraagde paralleliteit verminderd vanuit de grootste pagina-inschatting en het momenteel beschikbare globale budget, en elke paginatoewijzing blijft actief van werkclaim tot zijn geleende bitmap de callback verlaat
Geheugenreserveringen worden in invoervolgorde aangevraagd vóór de parallelle compilatie en rendering, zodat latere pagina's niet het budget kunnen wegnemen dat de volgende callback nodig heeft
Uitvoer in de wachtrij concurreert daarom eerlijk met actieve compilatie en afspelen om hetzelfde procesbrede budget, terwijl annulering of falen ongepubliceerde reserveringen vrijgeeft voordat werkers zich voegen
De callback mag het document niet muteren of vernietigen terwijl werkers actief zijn
THPDFParallelRenderPipelineInfo · Displaylijsten en drukwerkproductie