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 פעילים

THPDFParallelRenderPipelineInfo · רשימות תצוגה וייצור הדפסה