Cache de descodificação de imagens carregadas em partições
HotPDF combines independently locked cache metadata with exact per-key singleflight coordination
Parallel work
Sixteen metadata shards limit contention during lookup, admission, and eviction while expensive image decoding runs outside cache locks
Os pedidos para chaves diferentes podem descodificar em simultâneo, e os pedidos para a mesma chave elegem um único dono, cujo resultado concluído é partilhado com todos os chamadores em espera
Global bounds
ImageCacheMaxBytes, o número máximo de entradas e o tamanho máximo por entrada aplicam-se ao conteúdo combinado de todos os shards
A remoção entre shards preserva os limites configurados com exatidão e evita escolher o shard que acabou de receber uma inserção quando outro shard consegue satisfazer o pedido de remoção
Ownership and lifetime
AcquireLoadedImageStream e AcquireLoadedImageRegionAtResolution return immutable reference-counted handles, so warm hits and singleflight waiters share decoded storage without copying pixels
Um handle continua válido após a remoção da cache, a invalidação e a destruição do documento, enquanto CreateBitmapCopy fornece um bitmap isolado, pertencente ao chamador, quando são necessários píxeis modificáveis
Os métodos legados de descodificação em cache mantêm o contrato de TBitmap pertencente ao chamador, materializando uma cópia a partir do handle
Telemetry
GetImageDecodeConcurrencyInfo exposes live and cumulative concurrency counters
Os contadores expõem as aquisições de handles, as cópias de bitmap por compatibilidade e os bytes copiados, para além da atividade de owners paralelos e de singleflight
APIs relacionadas
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo