THotPDF.RenderLoadedPageTilesParallel Method
Отрисовывает tile одной загруженной страницы на изолированных workers, пока вызывающий поток выдаёт заимствованные bitmap в порядке обхода строк (row-major)
Объявление
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 выполняется последовательно в вызывающем потоке и получает tile в порядке обхода строк, даже если workers завершают их в другом порядке
Каждый bitmap заимствуется только на время вызова callback и сразу после этого освобождается, поэтому если данные должны пережить вызов — копируйте или кодируйте bitmap внутри callback
Установите Cancel, чтобы прекратить новые захваты работы, разбудить workers, освободить неопубликованные bitmap и вернуть количество доставленных callback'ов
Callback не должен изменять или уничтожать документ, пока workers остаются активными
Память и совместное использование
MaxWorkingBytes должен быть положительным; до начала работы он уменьшает число workers, отталкиваясь от самой большой консервативной резервации под tile
Каждый worker удерживает не более одного активного или завершённого tile, а действующий на весь процесс планировщик пиковой памяти может дополнительно задерживать его при конкурирующей работе с документами
Параллельные renderer'ы делят скопированные неизменяемые последовательности token глифов Type 3 и halftone threshold screen через ограниченный бюджет RendererSharedCacheMaxBytes
THPDFParallelTileRenderInfo · Display list и печатное производство