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