Caché por shards de decodificación de imágenes cargadas
HotPDF combina metadatos de caché con bloqueo independiente por shard y una coordinación singleflight exacta por clave
Trabajo en paralelo
Dieciséis shards de metadatos limitan la contención durante lookup, admisión y expulsión, mientras que la costosa decodificación de imágenes corre fuera de los locks de la caché
Las solicitudes de claves distintas pueden decodificar en paralelo, y las solicitudes de la misma clave eligen a un único dueño cuyo resultado completado se comparte con todos los llamadores en espera
Límites globales
ImageCacheMaxBytes, el conteo máximo de entradas y el tamaño máximo por entrada aplican al contenido combinado de todos los shards
El recorte entre shards preserva los límites configurados exactos y evita seleccionar el shard recién insertado cuando otro shard puede satisfacer la solicitud de expulsión
Propiedad y ciclo de vida
AcquireLoadedImageStream y AcquireLoadedImageRegionAtResolution devuelven handles inmutables con conteo de referencias, de modo que los aciertos en caliente y los que esperan en singleflight comparten el almacenamiento decodificado sin copiar píxeles
Un handle sigue siendo válido después de la expulsión de la caché, la invalidación y la destrucción del documento, mientras que CreateBitmapCopy proporciona un bitmap aislado propiedad del llamador cuando se requieren píxeles mutables
Los métodos heredados de decodificación cacheada conservan su contrato de TBitmap propiedad del llamador materializando una copia desde el handle
Telemetría
GetImageDecodeConcurrencyInfo expone contadores de concurrencia en vivo y acumulativos
Los contadores exponen adquisiciones de handles, copias de bitmap por compatibilidad y bytes copiados, además de la actividad paralela de dueños y singleflight
APIs relacionadas
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo