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