THotPDF.RenderLoadedPagesParallel Method

上限付きのワーカー間で display-list のコンパイルと再生をパイプライン化し、出力配列では入力の順序を保持します

宣言

function RenderLoadedPagesParallel(const PageIndices: array of Integer;
    DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray): Integer; overload;

function RenderLoadedPagesParallel(const PageIndices: array of Integer;
    DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray;
    out Info: THPDFParallelRenderPipelineInfo): Integer; overload;

動作

コンパイルは display-list キャッシュのロックの外で実行されるため、関連のないページを並行してコンパイルでき、入力すべてのコンパイルが終わる前に、最初に準備できたページのレンダリングを開始できます

The scheduler dynamically balances compile and playback work, caps workers at MaxConcurrency, isolates renderer state per worker, and shares cache entries through protected use counts

PeakMemorySchedulerEnabled が true の場合、正規化された要求から、最大のページ推定値と現在利用可能なグローバル budget に基づいて実効ワーカー数が減らされます。その後、確保された各ページが、コンパイルと再生を通じて、それぞれ公平なメモリ予約を保持します

Info を取るオーバーロードは、要求されたワーカー数と実効ワーカー数、メモリから導出したワーカー数の上限、ページごとの予約推定値、レンダリング用に予約されたバイト数のピーク、スケジューラーの admission 数、遅延したページ、待機時間、コンパイル数とキャッシュヒット数、完了した出力、ステージ同時実行数のピーク、最初の結果までのレイテンシ、総経過時間、最初のビットマップ完了時点でコンパイル済みだったページ数を報告します

The caller owns every non-nil bitmap in Bitmaps

完了した配列の結果は、実行中の予約が解放された後も呼び出し側の所有のままです。出力全体をスケジューラーの budget 内に収めたい場合は、RenderLoadedPagesParallelOrdered を使用してください

THPDFParallelRenderPipelineInfo · Display Lists and Print Production