Razdeljeni predpomnilnik dekodiranja naloženih slik

HotPDF združi neodvisno zaklenjene metapodatke predpomnilnika z natančno koordinacijo singleflight po ključih

Vzporedno delo

Šestnajst razdelkov metapodatkov omeji tekmovanje med poizvedbami, sprejemi in izseljevanji, medtem ko drago dekodiranje slik poteka zunaj zaklepov predpomnilnika

Zahteve za različne ključe lahko dekodirajo sočasno, zahteve za isti ključ pa izvolijo enega lastnika, katerega dokončani rezultat si delijo vsi čakajoči klicatelji

Globalne meje

ImageCacheMaxBytes, največje število vnosov in največja velikost na vnos veljajo za združeno vsebino vseh razdelkov

Obrezovanje med razdelki ohrani natančne konfigurirane omejitve in se izogne izbiri pravkar vstavljenega razdelka, medtem ko lahko drug razdelek izpolni zahtevo po izseljevanju

Lastništvo in življenjska doba

AcquireLoadedImageStream in AcquireLoadedImageRegionAtResolution vrneta nespremenljive ročaje s štetjem sklicev, zato si topli zadetki in čakalci singleflight delijo dekodirano shrambo brez kopiranja pikslov

Ročaj ostane veljaven po izseljevanju predpomnilnika, razveljavitvi in uničenju dokumenta, medtem ko CreateBitmapCopy zagotovi izolirano bitno sliko v lasti klicatelja, kadar so potrebni spremenljivi piksli

Stare metode dekodiranja s predpomnilnikom ohranijo svojo pogodbo TBitmap v lasti klicatelja z materializacijo ene kopije iz ročaja

Telemetrija

GetImageDecodeConcurrencyInfo izpostavi žive in kumulativne števce sočasnosti

Števci izpostavijo pridobitve ročajev, kopije bitnih slik za združljivost in kopirane bajte poleg vzporedne dejavnosti lastnikov in singleflight

Povezani API-ji

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo