Podzielona pamięć podręczna dekodowania załadowanych obrazów
HotPDF łączy niezależnie blokowane metadane pamięci podręcznej z dokładną koordynacją singleflight per klucz
Praca równoległa
Szesnaście shardów metadanych ogranicza konkurencję podczas wyszukiwania, wstępu i ewikcji, podczas gdy kosztowne dekodowanie obrazów działa poza blokadami cache
Żądania różnych kluczy mogą dekodować współbieżnie, a żądania tego samego klucza wybierają jednego właściciela, którego ukończony wynik jest współdzielony ze wszystkimi czekającymi wywołującymi
Granice globalne
ImageCacheMaxBytes, maksymalna liczba wpisów i maksymalny rozmiar wpisu dotyczą łączonej zawartości wszystkich shardów
Przycinanie między shardami zachowuje dokładne skonfigurowane limity i unika wybierania shardu właśnie wstawionego, gdy inny shard może zaspokoić żądanie ewikcji
Własność i czas życia
AcquireLoadedImageStream i AcquireLoadedImageRegionAtResolution zwracają niemodyfikowalne uchwyty z licznikiem referencji, więc ciepłe trafienia i czekający singleflight współdzielą zdekodowany magazyn bez kopiowania pikseli
Uchwyt pozostaje ważny po ewikcji z cache, unieważnieniu i zniszczeniu dokumentu, a CreateBitmapCopy dostarcza odizolowaną bitmapę należącą do wywołującego, gdy potrzebne są mutowalne piksele
Starsze metody dekodowania z pamięci podręcznej zachowują swój kontrakt TBitmap należącego do wywołującego, materializując jedną kopię z uchwytu
Telemetria
GetImageDecodeConcurrencyInfo wystawia bieżące i skumulowane liczniki współbieżności
Liczniki wystawiają pozyskania uchwytów, kopie bitmap kompatybilności i skopiowane bajty, oprócz aktywności równoległych właścicieli i singleflight
Powiązane API
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo