THotPDF.RenderLoadedPagesParallel Method

표시 목록 컴파일과 재생을 제한된 워커들에 걸쳐 파이프라인화하면서 출력 배열에서는 입력 순서를 유지합니다

선언

function RenderLoadedPagesParallel(const PageIndices: array of Integer;
    DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray): Integer; overload;

function RenderLoadedPagesParallel(const PageIndices: array of Integer;
    DPI, MaxConcurrency: Integer; out Bitmaps: THPDFBitmapArray;
    out Info: THPDFParallelRenderPipelineInfo): Integer; overload;

동작

컴파일은 디스플레이 리스트 캐시 잠금 밖에서 실행되므로, 관련 없는 페이지끼리 동시에 컴파일할 수 있고 전체 입력 집합이 컴파일되기 전에 먼저 준비된 페이지부터 렌더링을 시작할 수 있습니다

스케줄러는 컴파일과 재생 작업의 균형을 동적으로 맞추고, 워커를 MaxConcurrency로 제한하며, 렌더러 상태를 워커별로 격리하고, 보호된 use count로 캐시 항목을 공유합니다

PeakMemorySchedulerEnabled가 true이면 실효 워커 수가 정규화된 요청에서 가장 큰 페이지 추정치와 현재 사용 가능한 전역 budget을 반영해 줄어들고, 이후 claim된 모든 페이지는 컴파일과 재생 내내 자신의 공정한 메모리 예약을 유지합니다

Info overload는 요청 및 실효 워커 수, 메모리에서 유래한 워커 한도, 페이지 예약 추정치, peak 예약 렌더 바이트, 스케줄러 승인 수, 지연된 페이지, 대기 시간, 컴파일 및 캐시 적중 횟수, 완료된 출력, peak 단계 동시성, 첫 결과 지연 시간, 총 경과 시간, 첫 비트맵이 완료된 시점까지 컴파일된 페이지 수를 보고합니다

Bitmaps의 nil이 아닌 모든 비트맵은 호출자가 소유합니다

완성된 배열 결과는 in-flight 예약이 해제된 뒤에도 호출자 소유이므로, 출력 집합 전체가 스케줄러 budget 안에 있어야 한다면 RenderLoadedPagesParallelOrdered를 사용하세요

THPDFParallelRenderPipelineInfo · 디스플레이 리스트 및 인쇄 생산