THotPDF.RenderLoadedPagesParallelOrdered Method

Kompiluje a vykresľuje načítané stránky súbežne a doručuje dokončené bitmapy v poradí vstupu cez ohraničené spätné volanie vlákna volajúceho

Deklarácia

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;

Spätné volanie a vlastníctvo

Callback prebieha sériovo vo vlákne volajúceho s pozíciou vstupu od nuly, požadovaným indexom stránky, požičanou bitmapou a príznakom zrušenia

Bitmapa je platná len počas trvania spätného volania a uvoľní sa ihneď po návrate spätného volania, preto ju skopírujte alebo zakódujte v rámci spätného volania, keď výsledok musí prežiť toto volanie

Nastavte Cancel na zastavenie nárokovania nových stránok, prebudenie blokovaných pracovníkov, pripojenie prebiehajúcej práce, uvoľnenie nezverejnených výsledkov a vrátenie počtu dokončených spätných volaní

Zrušenie zo spätného volania tiež prebudí pracovníkov čakajúcich na rezerváciu pamäti bez toho, aby sa toto interné prebudenie zmenilo na chybu; externý token zrušenia alebo výnimka v spätnom volaní po vyčistení stále nahlásia zlyhanie

Spätný tlak

OutputQueueDepth obmedzuje dokončené bitmapy vrátane bitmapy aktívnej v spätnom volaní; hodnoty pod jedna vyberú efektívny počet pracovníkov a hodnoty nad počet stránok sa orezávajú

Plánovač rezervuje výstupnú kapacitu pre ďalšiu požadovanú pozíciu vstupu, takže neskoršie stránky nemôžu zaplniť front a blokovať usporiadaný postup, keď sa skoršia stránka kompiluje pomalšie

S PeakMemorySchedulerEnabled sa požadovaná paralelizácia zníži z najväčšieho odhadu stránky a aktuálne dostupného globálneho rozpočtu a každá rezervácia stránky zostáva aktívna od nárokovania práce, kým jej požičaná bitmapa neopustí spätné volanie

Rezervácie pamäti sa vyžiadajú v poradí vstupu ešte pred paralelnou kompiláciou a vykresľovaním, takže neskoršie stránky nemôžu vziať rozpočet potrebný pre ďalšie spätné volanie

Zaradený výstup preto spravodlivo súťaží s aktívnou kompiláciou a prehrávaním o rovnaký rozpočet v rámci procesu, zatiaľ čo zrušenie alebo zlyhanie uvoľní nezverejnené rezervácie pred pripojením pracovníkov

Spätné volanie nesmie mutovať ani zničiť dokument, kým sú pracovníci aktívni

THPDFParallelRenderPipelineInfo · Zoznamy zobrazenia a tlačová produkcia