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 阈值网屏