THotPDF.RenderLoadedPageTilesParallel Method

在相互隔离的 worker 上渲染一个已加载页面的各个 tile,同时由调用线程按行优先顺序交付借出的 bitmap

声明

function RenderLoadedPageTilesParallel(PageIndex, DPI,
    TileWidthPixels, TileHeightPixels, MaxConcurrency: Integer;
    MaxWorkingBytes: Int64; Callback: THPDFRenderTileEvent): Integer; overload;

function RenderLoadedPageTilesParallel(PageIndex, DPI,
    TileWidthPixels, TileHeightPixels, MaxConcurrency: Integer;
    MaxWorkingBytes: Int64; Callback: THPDFRenderTileEvent;
    out Info: THPDFParallelTileRenderInfo): Integer; overload;

流式交付与所有权

Callback 在调用线程上串行执行,即使各 worker 完成顺序不同,交付的 tile 也严格按行优先顺序排列

每个 bitmap 只在 callback 调用期间借用,调用一结束就立即释放;如果需要继续使用,必须在 callback 内部复制或编码

设置 Cancel 可以停止新的认领、唤醒 worker、释放尚未发布的 bitmap,并返回已交付的 callback 数量

worker 仍在运行期间,callback 不得修改或销毁文档

内存与共享

MaxWorkingBytes 必须为正数;开工之前会依据最大的保守 tile 预留量来削减 worker 数量

每个 worker 最多保留一个进行中或已完成的 tile,在多个文档任务竞争时,进程级峰值内存调度器还可能进一步推迟它

并行渲染器通过 RendererSharedCacheMaxBytes 限定的预算,共享复制出来的不可变 Type 3 字形 token 序列和 halftone 阈值网屏

THPDFParallelTileRenderInfo · 显示列表与印刷生产