THotPDF.RenderLoadedPagesParallelOrdered Method

Mengompilasi dan merender halaman termuat secara bersamaan sambil mengirimkan bitmap yang selesai dalam urutan input melalui callback utas pemanggil terbatas

Deklarasi

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;

Callback dan kepemilikan

Callback berjalan serial pada utas pemanggil dengan posisi input berbasis nol, indeks halaman yang diminta, bitmap pinjaman, dan flag pembatalan

Bitmap hanya valid selama durasi callback dan dilepaskan segera setelah callback kembali, jadi salin atau kodekan di dalam callback ketika hasil harus bertahan lebih lama dari pemanggilan itu

Atur Cancel untuk berhenti mengklaim halaman baru, membangunkan pekerja yang diblokir, bergabung dengan pekerjaan in-flight, melepaskan hasil yang tidak dipublikasikan, dan mengembalikan jumlah callback yang selesai

Pembatalan lewat callback juga membangunkan pekerja yang menunggu reservasi memori tanpa menjadikan wakeup internal itu sebagai error; cancellation token eksternal atau exception callback tetap dilaporkan sebagai kegagalan setelah pembersihan

Backpressure

OutputQueueDepth membatasi bitmap yang selesai termasuk bitmap yang aktif dalam callback; nilai di bawah satu memilih jumlah pekerja efektif dan nilai di atas jumlah halaman dijepit

Penjadwal mencadangkan kapasitas keluaran untuk posisi input berikutnya yang diperlukan, sehingga halaman berikutnya tidak dapat mengisi antrean dan memblokir kemajuan terurut ketika halaman sebelumnya dikompilasi lebih lambat

Dengan PeakMemorySchedulerEnabled, paralelisme yang diminta dikurangi dari estimasi halaman terbesar dan anggaran global yang tersedia saat ini, dan setiap reservasi halaman tetap aktif dari klaim pekerjaan sampai bitmap pinjamannya meninggalkan callback

Reservasi memori diminta dalam urutan input sebelum kompilasi dan rendering paralel, sehingga halaman berikutnya tidak bisa mengambil budget yang dibutuhkan callback berikutnya

Keluaran yang diantrekan karena itu bersaing secara adil dengan kompilasi dan pemutaran aktif untuk anggaran proses-lebar yang sama, sementara pembatalan atau kegagalan melepaskan reservasi yang tidak dipublikasikan sebelum bergabung dengan pekerja

Callback tidak boleh memutasi atau menghancurkan dokumen sementara pekerja aktif

THPDFParallelRenderPipelineInfo · Daftar Tampilan dan Produksi Cetak