Cache fragmentat de decodare a imaginilor încărcate

HotPDF combină metadate de cache blocate independent cu coordonare exactă singleflight per cheie

Lucru paralel

Șaisprezece fragmente de metadate limitează contestația în timpul căutării, admiterii și evacuării, în timp ce decodarea costisitoare a imaginilor rulează în afara blocărilor de cache

Cererile pentru chei diferite pot decoda concurent, iar cererile pentru aceeași cheie aleg un singur proprietar al cărui rezultat finalizat este partajat cu toți apelanții care așteaptă

Limite globale

ImageCacheMaxBytes, numărul maxim de intrări și dimensiunea maximă per intrare se aplică conținutului combinat al tuturor fragmentelor

Tunderea între fragmente păstrează limitele exacte configurate și evită selectarea fragmentului tocmai inserat în timp ce alt fragment poate satisface cererea de evacuare

Proprietate și durată de viață

AcquireLoadedImageStream și AcquireLoadedImageRegionAtResolution returnează handle-uri imuabile cu numărare de referințe, astfel încât loviturile calde și așteptătorii singleflight partajează stocarea decodată fără a copia pixelii

Un handle rămâne valid după evacuarea din cache, invalidare și distrugerea documentului, în timp ce CreateBitmapCopy oferă un bitmap izolat deținut de apelant când sunt necesari pixeli mutabili

Metodele moștenite de decodare cu cache își păstrează contractul TBitmap deținut de apelant materializând o copie din handle

Telemetry

GetImageDecodeConcurrencyInfo expune numărători live și cumulative de concurență

Numărătorile expun achizițiile de handle, copiile de bitmap de compatibilitate și octeții copiați, pe lângă activitatea de proprietar paralel și singleflight

API-uri conexe

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo