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 и печатное производство