シャード化ロード済み画像デコードキャッシュ

HotPDF は、独立してロックされたキャッシュメタデータと正確なキーごとのシングルフライト調整を組み合わせます

並列作業

16 個のメタデータシャードは、高価な画像デコードがキャッシュロック外で実行されている間、ルックアップ、受付、退避中の競合を制限します

異なるキーの要求は並行してデコードでき、同じキーの要求は、完了した結果をすべての待機呼び出し側と共有する 1 つの所有者を選出します

グローバル境界

ImageCacheMaxBytes、最大エントリ数、エントリごとの最大サイズは、すべてのシャードの結合コンテンツに適用されます

クロスシャード切り詰めは、正確な設定済み制限を保持し、別のシャードが退避要求を満たすことができる場合に、ちょうど挿入されたシャードを選択することを回避します

所有権とライフタイム

AcquireLoadedImageStream と AcquireLoadedImageRegionAtResolution は不変の参照カウントハンドルを返すため、ウォームヒットとシングルフライト待機者はピクセルをコピーせずにデコード済みストレージを共有します

ハンドルはキャッシュ退避、無効化、ドキュメント破棄の後も有効なままであり、CreateBitmapCopy は可変ピクセルが必要な場合に分離された呼び出し側所有ビットマップを提供します

レガシーのキャッシュ済みデコードメソッドは、ハンドルから 1 つのコピーを具体化することにより、呼び出し側所有の TBitmap 契約を保持します

テレメトリ

GetImageDecodeConcurrencyInfo は、ライブと累積の並行カウンターを公開します

カウンターは、並列オーナーとシングルフライトアクティビティに加えて、ハンドル取得、互換性ビットマップコピー、コピーされたバイトを公開します

関連 API

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo