THotPDF.RenderLoadedPagesParallel Method

کامپایل و پخش display-list را بین workerهای محدود به‌صورت pipeline اجرا می‌کند و ترتیب ورودی را در آرایهٔ خروجی حفظ می‌کند

اعلان

function RenderLoadedPagesParallel(const PageIndices: array of Integer;
    DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray): Integer; overload;

function RenderLoadedPagesParallel(const PageIndices: array of Integer;
    DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray;
    out Info: THPDFParallelRenderPipelineInfo): Integer; overload;

رفتار

کامپایل خارج از قفل cache مربوط به display-list اجرا می‌شود، بنابراین صفحه‌های نامرتبط می‌توانند هم‌زمان کامپایل شوند و نخستین صفحهٔ آماده می‌تواند پیش از کامپایل شدن کل مجموعهٔ ورودی رندر را شروع کند

The scheduler dynamically balances compile and playback work, caps workers at MaxConcurrency, isolates renderer state per worker, and shares cache entries through protected use counts

وقتی PeakMemorySchedulerEnabled برابر true باشد، تعداد worker مؤثر با توجه به بزرگ‌ترین تخمین صفحه و بودجهٔ سراسری در دسترس فعلی، از درخواست نرمال‌شده کمتر می‌شود؛ سپس هر صفحهٔ claim‌شده در طول کامپایل و پخش، رزرو حافظهٔ منصفانهٔ خودش را نگه می‌دارد

overload دارای Info تعداد workerهای درخواستی و مؤثر، سقف worker ناشی از حافظه، تخمین رزرو هر صفحه، اوج بایت‌های رزروشدهٔ رندر، پذیرش‌های scheduler، صفحه‌های تأخیرخورده، زمان انتظار، شمار کامپایل و cache hit، خروجی تکمیل‌شده، اوج هم‌زمانی مرحله‌ها، latency اولین نتیجه، کل زمان سپری‌شده و تعداد صفحه‌های کامپایل‌شده تا لحظهٔ تکمیل اولین bitmap را گزارش می‌دهد

The caller owns every non-nil bitmap in Bitmaps

نتایج آرایهٔ تکمیل‌شده پس از آزاد شدن رزروهای in-flight آن‌ها همچنان در مالکیت فراخواننده می‌مانند، بنابراین وقتی خود مجموعهٔ خروجی هم باید داخل بودجهٔ scheduler بماند از RenderLoadedPagesParallelOrdered استفاده کنید

THPDFParallelRenderPipelineInfo · Display Lists and Print Production