แคชการถอดรหัสภาพแบบแยกส่วน
HotPDF รวมเมทาดาทาแคชที่ล็อกอิสระเข้ากับการประสาน singleflight ที่แม่นยำต่อคีย์
งานขนาน
ชิ้นส่วนเมทาดาทาสิบหกส่วนจำกัดการแย่งชิงระหว่างการค้นหา การอนุญาตเข้า และการไล่ออก ขณะที่การถอดรหัสภาพที่แพงทำงานนอกรังแคช
คำขอสำหรับคีย์ต่างกันสามารถถอดรหัสพร้อมกัน และคำขอสำหรับคีย์เดียวกันเลือกเจ้าของหนึ่งรายที่ผลสรุปที่เสร็จถูกแบ่งปันกับผู้เรียกที่รอทั้งหมด
ขอบเขตรวม
ImageCacheMaxBytes จำนวนรายการสูงสุด และขนาดต่อรายการสูงสุดใช้กับเนื้อหาที่รวมของทุกชิ้นส่วน
การตัดข้ามชิ้นส่วนคงขีดจำกัดที่กำหนดแม่นยำและหลีกเลี่ยงการเลือกชิ้นส่วนที่เพิ่งแทรกในขณะที่ชิ้นส่วนอื่นตอบสนองคำขอไล่ออกได้
ความเป็นเจ้าของและอายุ
AcquireLoadedImageStream และ AcquireLoadedImageRegionAtResolution ส่งคืนแฮนเดิลที่อ้างอิงด้วยการนับแบบไม่เปลี่ยนค่า การตีอุ่นและผู้รอ singleflight จึงแบ่งปันพื้นที่เก็บที่ถอดรหัสโดยไม่คัดลอกพิกเซล
แฮนเดิลยังคงใช้ได้หลังการไล่ออกแคช การทำให้เป็นโมฆะ และการทำลายเอกสาร ขณะที่ CreateBitmapCopy ให้บิตแมปแยกที่ผู้เรียกเป็นเจ้าของเมื่อต้องใช้พิกเซลที่แก้ไขได้
เมธอดถอดรหัสแคชรุ่นเก่าเก็บสัญญา TBitmap ที่ผู้เรียกเป็นเจ้าของด้วยการสร้างสำเนาหนึ่งจากแฮนเดิล
เทเลเมทรี
GetImageDecodeConcurrencyInfo เปิดเผยตัวนับการทำงานพร้อมกันสดและสะสม
ตัวนับเปิดเผยการครอบแฮนเดิล สำเนาบิตแมปความเข้ากันได้ และไบต์ที่คัดลอก นอกเหนือจากกิจกรรมเจ้าของขนานและ singleflight
API ที่เกี่ยวข้อง
IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo