Gesharde geladen-afbeeldingen-decodecache

HotPDF combineert onafhankelijk vergrendelde cachemetadata met exacte per-sleutel singleflight-coördinatie

Parallel werk

Zestien metadatashards beperken de concurrentie tijdens opzoeken, toelating en uitzetting terwijl dure afbeeldingsdecodering buiten cacheregrendels wordt uitgevoerd

Verzoeken voor verschillende sleutels kunnen gelijktijdig worden gedecodeerd en verzoeken voor dezelfde sleutel kiezen één eigenaar wiens voltooide resultaat met alle wachtende aanroepers wordt gedeeld

Globale grenzen

ImageCacheMaxBytes, het maximum aantal invoeren en de maximale omvang per invoer zijn van toepassing op de gecombineerde inhoud van alle shards

Trimmen over shards heen behoudt exacte geconfigureerde limieten en vermijdt het selecteren van de net ingevoegde shard terwijl een andere shard het uitzettingsverzoek kan vervullen

Eigendom en levensduur

AcquireLoadedImageStream en AcquireLoadedImageRegionAtResolution retourneren onveranderlijke referentiegetelde handles, zodat warme treffers en singleflight-wachters gedecodeerde opslag delen zonder pixels te kopiëren

Een handle blijft geldig na cache-uitzetting, -ongeldigmaking en documentvernietiging, terwijl CreateBitmapCopy een geïsoleerde aanroeper-gebonden bitmap biedt wanneer veranderlijke pixels vereist zijn

De verouderde gecachte-decodemethoden behouden hun aanroeper-gebonden TBitmap-contract door één kopie uit de handle te materialiseren

Telemetrie

GetImageDecodeConcurrencyInfo stelt live- en cumulatieve-concurrentiecounters bloot

De counters leggen handle-acquisities, compatibiliteitsbitmap-kopieën en gekopieerde bytes bloot naast parallelle-eigenaar- en singleflight-activiteit

Gerelateerde API's

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo