Fragmentionerad inläst-bildavkodningscache
HotPDF kombinerar oberoende låsta cachemetadata med exakt per-nyckel singleflight-samordning
Parallellt arbete
Sexton metadataskärvor begränsar kontention under uppslag, antagning och avlägsnande medan dyr bildavkodning körs utanför cachelåsen
Förfrågningar för olika nycklar kan avkoda samtidigt och förfrågningar för samma nyckel väljer en ägare vars slutförda resultat delas med alla väntande anropare
Globala gränser
ImageCacheMaxBytes, det maximala postantalet och den maximala storleken per post gäller det kombinerade innehållet i alla skärvor
Trimming över skärvor bevarar exakta konfigurerade gränser och undviker att välja den just-infogade skärvan medan en annan skärva kan uppfylla avlägsningsförfrågan
Ägande och livslängd
AcquireLoadedImageStream och AcquireLoadedImageRegionAtResolution returnerar oföränderliga referensräknade handtag, så varma träffar och singleflight-väntare delar avkodad lagring utan att kopiera pixlar
Ett handtag förblir giltigt efter cachens avlägsnande, ogiltigförklaring och dokumentförstörelse, medan CreateBitmapCopy tillhandahåller en isolerad anroparägd bitmapp när föränderliga pixlar krävs
De äldre cachade avkodningsmetoderna behåller sitt anroparägda TBitmap-kontrakt genom att materialisera en kopia från handtaget
Telemetri
GetImageDecodeConcurrencyInfo exponerar levande och kumulativa samtidighetsräknare
Räknarna exponerar handtagsförvärv, kompatibilitets-bitmappskopior och kopierade bytes utöver parallell ägare- och singleflight-aktivitet
Relaterade API:er
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo