Cache di decodifica delle immagini caricate a shard
HotPDF combina metadati di cache con lock indipendenti per shard e coordinamento singleflight esatto per chiave
Lavoro parallelo
Sedici shard di metadati limitano la contesa durante lookup, ammissione ed evizione mentre la costosa decodifica delle immagini gira fuori dai lock della cache
Le richieste per chiavi diverse possono decodificare in concorrenza e le richieste per la stessa chiave eleggono un proprietario il cui risultato completato viene condiviso con tutti i chiamanti in attesa
Limiti globali
ImageCacheMaxBytes, il conteggio massimo di voci e la dimensione massima per voce si applicano al contenuto combinato di tutti gli shard
Il trimming cross-shard preserva i limiti configurati esatti ed evita di selezionare lo shard appena inserito quando un altro shard può soddisfare la richiesta di evizione
Proprietà e ciclo di vita
AcquireLoadedImageStream e AcquireLoadedImageRegionAtResolution restituiscono handle immutabili reference-counted, così gli hit a caldo e i waiter singleflight condividono l'archiviazione decodificata senza copiare pixel
Un handle resta valido dopo evizione, invalidazione della cache e distruzione del documento, mentre CreateBitmapCopy fornisce una bitmap isolata di proprietà del chiamante quando servono pixel mutabili
I metodi di decodifica in cache legacy conservano il loro contratto di TBitmap di proprietà del chiamante materializzando una copia dall'handle
Telemetria
GetImageDecodeConcurrencyInfo espone contatori di concorrenza live e cumulativi
I contatori espongono acquisizioni di handle, copie bitmap di compatibilità e byte copiati in aggiunta all'attività parallela di proprietari e singleflight
API correlate
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo