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