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