分片已載入影像解碼快取
HotPDF 把獨立加鎖的快取中繼資料,與精確的 per-key singleflight 協調結合起來
平行工作
十六個中繼資料分片限制查詢、准入與驅逐時的爭用,昂貴的影像解碼則在快取鎖之外執行
不同鍵的請求可以並行解碼,同一鍵的請求會選出一名擁有者,完成後的結果共享給所有等待的呼叫端
全域邊界
ImageCacheMaxBytes、最大項目數與單項大小上限套用到所有分片的合併內容
跨分片裁剪維持精確的設定限制,且在其他分片能滿足驅逐需求時,避免挑到剛插入的分片
擁有權與生命週期
AcquireLoadedImageStream 與 AcquireLoadedImageRegionAtResolution 回傳不可變的參照計數控制代碼,暖命中與 singleflight 等待者共享解碼儲存,不必複製像素
控制代碼在快取驅逐、失效與文件銷毀之後仍有效;需要可變像素時,CreateBitmapCopy 提供隔離、呼叫端擁有的點陣圖
舊式快取解碼方法透過從控制代碼具現化一份副本,維持呼叫端擁有 TBitmap 的既有契約
遙測
GetImageDecodeConcurrencyInfo 公開即時與累計的並行計數器
這些計數器除平行擁有者與 singleflight 活動外,還涵蓋控制代碼取得、相容性點陣圖複製與複製位元組
相關 API
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo