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