Szegmentált betöltött kép-dekódolási gyorsítótár

A HotPDF a függetlenül zárolt gyorsítótár-metaadatokat pontos kulcsonkénti singleflight-koordinációval kombinálja

Párhuzamos munka

Tizenhat metaadat-szegmens korlátozza a versengést a keresés, a beengedés a kilakoltatás során, míg a költséges képdekódolás a gyorsítótár-zárakon kívül fut

A különböző kulcsokra vonatkozó kérések egyidejűleg dekódolhatnak, és az azonos kulcsra vonatkozó kérések egy tulajdonost választanak, akinek a befejezett eredményét minden várakozó hívóval megosztják

Globális korlátok

Az ImageCacheMaxBytes, a maximális bejegyzésszám és a maximális bejegyzésenkénti méret az összes szegmens egyesített tartalmára vonatkozik

A szegmensek közötti metszés megőrzi a pontos konfigurált korlátokat, és elkerüli az éppen beszúrt szegmens kiválasztását, ha egy másik szegmens kielégítheti a kilakoltatási kérést

Tulajdonlás és élettartam

Az AcquireLoadedImageStream és az AcquireLoadedImageRegionAtResolution megváltoztathatatlan, hivatkozásszámlált kezelőket ad vissza, így a meleg találatok és a singleflight-várakozók a pixelek másolása nélkül osztják meg a dekódolt tárolót

Egy kezelő a gyorsítótár-kilakoltatás, az érvénytelenítés a dokumentum-megsemmisítés után is érvényes marad, míg a CreateBitmapCopy elkülönített, hívó-tulajdonú bitképet biztosít, ha változtatható pixelekre van szükség

Az örökölt gyorsítótárazott dekódolási metódusok megtartják hívó-tulajdonú TBitmap szerződésüket azáltal, hogy a kezelőből egy másolatot materializálnak

Telemetria

A GetImageDecodeConcurrencyInfo élő és kumulatív egyidejűségi számlálókat tesz elérhetővé

A számlálók a párhuzamos tulajdonos- és singleflight-aktivitás mellett kezelő-beszerzéseket, kompatibilitási bitkép-másolatokat és másolt bájtokat is elérhetővé tesznek

Kapcsolódó API-k

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo