Sharded Yüklenmiş Görsel Decode Cache'i
HotPDF, bağımsız kilitlenen cache meta verisini anahtar başına hassas singleflight koordinasyonuyla birleştirir
Paralel iş
On altı metadata shard'ı, lookup, admission ve eviction sırasında çekişmeyi sınırlar; maliyetli görsel decoding ise cache kilitlerinin dışında çalışır
Farklı anahtarlar için istekler eşzamanlı decode edilebilir; aynı anahtar için istekler ise tek bir owner seçer ve tamamlanan sonuç tüm bekleyen çağıranlarla paylaşılır
Küresel sınırlar
ImageCacheMaxBytes, azami girdi sayısı ve girdi başına azami boyut tüm shard'ların birleşik içeriğine uygulanır
Shard'lar arası kırpma yapılandırılmış sınırları tam olarak korur ve eviction isteğini başka bir shard karşılayabilirken yeni eklenen shard'ı seçmekten kaçınır
Sahiplik ve yaşam süresi
AcquireLoadedImageStream ve AcquireLoadedImageRegionAtResolution, değişmez reference-counted handle'lar döndürür; böylece warm isabetleri ve singleflight bekleyenleri decode edilmiş depolamayı pixel kopyalamadan paylaşır
Bir handle, cache eviction, invalidation ve belge yok edilmesinden sonra geçerli kalır; değiştirilebilir pixel gerektiğinde CreateBitmapCopy izole, çağıranın sahip olduğu bir bitmap sağlar
Eski cache'lenen decode metodları, handle'dan bir kopya oluşturarak çağıranın sahip olduğu TBitmap sözleşmesini korur
Telemetri
GetImageDecodeConcurrencyInfo canlı ve kümülatif concurrency sayaçlarını açığa çıkarır
Sayaçlar; paralel owner ve singleflight etkinliğine ek olarak handle edinmelerini, uyumluluk bitmap kopyalarını ve kopyalanan baytları da gösterir
İlgili API'ler
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo