分片已加载图像解码缓存

HotPDF 将独立锁定的缓存元数据与精确的按键单飞协调相结合

并行工作

十六个元数据分片在查找、准入和淘汰期间限制争用,而昂贵的图像解码在缓存锁之外运行

不同键的请求可以并发解码,同一键的请求选出一个所有者,其完成结果与所有等待的调用方共享

全局边界

ImageCacheMaxBytes、最大条目数和每个条目的最大大小适用于所有分片的组合内容

跨分片修剪保留确切配置的限制,并避免在另一个分片可以满足淘汰请求时选择刚插入的分片

所有权与生命周期

AcquireLoadedImageStream 和 AcquireLoadedImageRegionAtResolution 返回不可变的引用计数句柄,因此热命中和单飞等待者共享解码存储而不复制像素

句柄在缓存淘汰、失效和文档销毁后仍然有效,而 CreateBitmapCopy 在需要可变像素时提供隔离的调用方拥有的位图

旧式缓存解码方法通过从句柄物化一份拷贝保留其调用方拥有的 TBitmap 契约

遥测

GetImageDecodeConcurrencyInfo 公开实时和累计并发计数器

计数器在并行所有者和单飞活动之外公开句柄获取、兼容性位图拷贝和拷贝字节

相关 API

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo