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