Шардиран кеш за декодиране на заредени изображения
HotPDF съчетава независимо заключвани шардирани кеш метаданни с точна singleflight координация на ключ
Паралелна работа
Шестнайсет metadata shard-а ограничават конкуренцията при lookup, допускане и eviction, докато скъпото декодиране на изображения върви извън кеш заключванията
Заявки за различни ключове могат да декодират паралелно, а заявките за един и същ ключ избират един собственик, чийто завършен резултат се споделя с всички чакащи извикващи
Глобални граници
ImageCacheMaxBytes, максималният брой записи и максималният размер на запис се прилагат върху съвкупното съдържание на всички shard-ове
Междушардовото подрязване запазва точните конфигурирани лимити и избягва да избере току-що влезлия shard, докато друг shard може да задоволи заявката за eviction
Собственост и живот
AcquireLoadedImageStream и AcquireLoadedImageRegionAtResolution връщат неизменяеми handle-и със референтно броене, така че топлите попадения и singleflight чакащите споделят декодираното хранилище без копиране на пиксели
Handle-ът остава валиден след eviction, инвалидация и унищожаване на документа, докато CreateBitmapCopy предоставя изолиран bitmap, притежаван от извикващия, когато са нужни променими пиксели
Legacy методите за кеширано декодиране запазват договора си TBitmap, притежаван от извикващия, като материализират едно копие от handle-а
Телеметрия
GetImageDecodeConcurrencyInfo излага текущи и кумулативни броячи за паралелизъм
Броячите покриват присвоявания на handle-и, compatibility bitmap копия и копирани байтове, освен паралелната работа на собствениците и singleflight активността
Свързани API
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo