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