THotPDF.RenderLoadedPagesParallelOrdered Method

Compila e renderiza páginas carregadas simultaneamente entregando bitmaps concluídos em ordem de entrada por meio de um retorno de chamada limitado na thread de chamada

Declaração

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;

Retorno de chamada e propriedade

Callback é executado serialmente na thread de chamada com a posição de entrada de base zero, o índice de página solicitado, o bitmap emprestado e o sinalizador de cancelamento

O bitmap é válido somente durante o retorno de chamada e é liberado imediatamente após o retorno, portanto copie ou codifique-o dentro do retorno de chamada quando o resultado precisar sobreviver àquela invocação

Defina Cancel para parar de reivindicar novas páginas, acordar trabalhadores bloqueados, unir trabalho em andamento, liberar resultados não publicados e retornar o número de retornos de chamada concluídos

O cancelamento pelo retorno de chamada também acorda trabalhadores esperando por uma reserva de memória, sem transformar essa ativação interna em erro; um token de cancelamento externo ou uma exceção no retorno de chamada ainda relatam falha após a limpeza

Contrapressão

OutputQueueDepth limita os bitmaps concluídos incluindo o bitmap ativo no retorno de chamada; valores abaixo de um selecionam o número efetivo de trabalhadores e valores acima da contagem de páginas são limitados

O agendador reserva capacidade de saída para a próxima posição de entrada exigida, portanto páginas posteriores não podem preencher a fila e bloquear o progresso ordenado quando uma página anterior compila mais lentamente

Com PeakMemorySchedulerEnabled, o paralelismo solicitado é reduzido da maior estimativa de página e do orçamento global atualmente disponível, e cada reserva de página permanece ativa desde a reivindicação de trabalho até que seu bitmap emprestado saia do retorno de chamada

As reservas de memória são solicitadas em ordem de entrada antes da compilação e da renderização paralelas, então páginas posteriores não podem consumir o orçamento necessário para o próximo retorno de chamada

A saída enfileirada compete portanto de forma justa com a compilação e a reprodução ativas pelo mesmo orçamento em todo o processo, enquanto o cancelamento ou a falha libera reservas não publicadas antes de unir os trabalhadores

O retorno de chamada não deve mutar ou destruir o documento enquanto os trabalhadores estão ativos

THPDFParallelRenderPipelineInfo · Listas de exibição e produção de impressão