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