THotPDF.RenderLoadedPagesParallelOrdered Method

Compila y renderiza las páginas cargadas de forma concurrente mientras entrega los mapas de bits completados en orden de entrada a través de una devolución de llamada acotada del subproceso que realiza la llamada

Declaración

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;

Devolución de llamada y propiedad

Callback se ejecuta en serie en el subproceso que realiza la llamada con la posición de entrada basada en cero, el índice de página solicitado, el mapa de bits prestado y el indicador de cancelación

El mapa de bits es válido solo durante la duración de la devolución de llamada y se libera inmediatamente después de que esta regresa, así que cópielo o codifíquelo dentro de la devolución de llamada cuando el resultado deba sobrevivir a esa invocación

Establezca Cancel para dejar de reclamar páginas nuevas, despertar a los trabajadores bloqueados, unirse al trabajo en curso, liberar los resultados no publicados y devolver el número de devoluciones de llamada completadas

La cancelación de la devolución de llamada también despierta a los trabajadores que esperan una reserva de memoria sin convertir ese despertar interno en un error; un token de cancelación externo o una excepción dentro de la devolución de llamada siguen reportando fallo después de la limpieza

Contrapresión

OutputQueueDepth limita los mapas de bits completados, incluido el mapa de bits activo en la devolución de llamada; los valores inferiores a uno seleccionan el número efectivo de trabajadores y los valores superiores al número de páginas se recortan

El programador reserva capacidad de salida para la siguiente posición de entrada requerida, por lo que las páginas posteriores no pueden llenar la cola ni bloquear el progreso ordenado cuando una página anterior compila más lentamente

Con PeakMemorySchedulerEnabled, el paralelismo solicitado se reduce a partir de la estimación de página más grande y el presupuesto global disponible en ese momento, y cada reserva de página permanece activa desde la reclamación del trabajo hasta que su mapa de bits prestado sale de la devolución de llamada

Las reservas de memoria se solicitan en orden de entrada antes de la compilación y el renderizado paralelos, de modo que las páginas posteriores no pueden quedarse con el presupuesto que necesita la siguiente devolución de llamada

Por lo tanto, la salida en cola compite de forma justa con la compilación y la reproducción activas por el mismo presupuesto de todo el proceso, mientras que la cancelación o el fallo liberan las reservas no publicadas antes de unirse a los trabajadores

La devolución de llamada no debe modificar ni destruir el documento mientras los trabajadores están activos

THPDFParallelRenderPipelineInfo · Listas de visualización y producción de impresión