THotPDF.RenderLoadedPagesParallelOrdered Method
מהדר ומרנדר עמודים טעונים במקביל, תוך מסירת bitmaps שהושלמו לפי סדר הקלט דרך callback מוגבל על ה-thread הקורא
הצהרה
function RenderLoadedPagesParallelOrdered(
const PageIndices: array of Integer; DPI, MaxConcurrency,
OutputQueueDepth: Integer; Callback: THPDFParallelRenderPageEvent): Integer; overload;
function RenderLoadedPagesParallelOrdered(
const PageIndices: array of Integer; DPI, MaxConcurrency,
OutputQueueDepth: Integer; Callback: THPDFParallelRenderPageEvent;
out Info: THPDFParallelRenderPipelineInfo): Integer; overload;
Callback ובעלות
Callback רץ באופן סריאלי על ה-thread הקורא ומקבל את מיקום הקלט המבוסס-אפס, את אינדקס העמוד המבוקש, bitmap מושאל ודגל ביטול
ה-bitmap תקף רק למשך ה-callback ומשוחרר מיד אחרי שה-callback מסתיים, לכן העתיקו או קודדו אותו בתוך ה-callback אם התוצאה צריכה לשרוד מעבר להפעלה זו
הגדירו Cancel כדי לעצור תביעה של עמודים חדשים, להעיר workers חסומים, לחבר עבודה בעיצומה, לשחרר תוצאות שטרם פורסמו, ולהחזיר את מספר ה-callbacks שהושלמו
ביטול של callback מעיר גם workers שממתינים להזמנת זיכרון, בלי להפוך את ההשכמה הפנימית הזו לשגיאה; אסימון ביטול חיצוני או חריגה ב-callback עדיין מדווחים על כשל אחרי הניקוי
Backpressure
OutputQueueDepth מגביל את מספר ה-bitmaps שהושלמו, לרבות ה-bitmap הפעיל ב-callback; ערכים מתחת ל-1 בוחרים את מספר ה-workers בפועל, וערכים מעל מספר העמודים נחתכים למספר זה
ה-scheduler שומר קיבולת פלט עבור מיקום הקלט הבא שנדרש, כך שעמודים מאוחרים לא יכולים למלא את התור ולחסום התקדמות מסודרת כשעמוד מוקדם יותר מתהדר לאט יותר
עם PeakMemorySchedulerEnabled, המקביליות המבוקשת מוקטנת לפי הערכת העמוד הגדולה ביותר והתקציב הגלובלי הזמין כרגע, והזמנת כל עמוד נשארת פעילה מרגע תביעת העבודה ועד שה-bitmap המושאל שלה יוצא מה-callback
הזמנות זיכרון מתבקשות בסדר הקלט לפני ההידור והרינדור המקביליים, כך שעמודים מאוחרים לא יכולים לגזול את התקציב שה-callback הבא זקוק לו
הפלט הממתין בתור מתחרה לכן בהוגנות עם הידור ונגינה פעילים על אותו תקציב ברמת התהליך, ואילו ביטול או כשל משחרר הזמנות שלא פורסמו לפני חיבור ה-workers
ה-callback אסור שישנה או יהרוס את המסמך כלעוד ה-workers פעילים