Cache de decodificação de imagem carregada em shards

O HotPDF combina metadados de cache com bloqueio independente com coordenação singleflight exata por chave

Trabalho paralelo

Dezesseis shards de metadados limitam a contenção durante consulta, admissão e remoção enquanto a decodificação cara de imagem é executada fora dos bloqueios de cache

Solicitações para chaves diferentes podem decodificar concorrentemente e solicitações para a mesma chave elegem um proprietário cujo resultado concluído é compartilhado com todos os chamadores em espera

Limites globais

ImageCacheMaxBytes, a contagem máxima de entradas e o tamanho máximo por entrada aplicam-se ao conteúdo combinado de todos os shards

O corte entre shards preserva limites configurados exatos e evita selecionar o shard recém-inserido enquanto outro shard pode satisfazer a solicitação de remoção

Propriedade e ciclo de vida

AcquireLoadedImageStream e AcquireLoadedImageRegionAtResolution retornam handles imutáveis com contagem de referências, portanto ocorrências mornas e esperadores singleflight compartilham armazenamento decodificado sem copiar pixels

Um handle permanece válido após remoção de cache, invalidação e destruição de documento, enquanto CreateBitmapCopy fornece um bitmap isolado de propriedade do chamador quando pixels mutáveis são exigidos

Os métodos legados de decodificação em cache retêm seu contrato de TBitmap de propriedade do chamador materializando uma cópia do handle

Telemetria

GetImageDecodeConcurrencyInfo expõe contadores de concorrência ao vivo e cumulativos

Os contadores expõem aquisições de handle, cópias de bitmap de compatibilidade e bytes copiados além da atividade paralela de proprietário e singleflight

APIs relacionadas

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo