THotPDF.RenderLoadedPagesParallelOrdered Metodu
Yüklenmiş sayfaları eşzamanlı derleyip render eder ve tamamlanan bitmap'leri sınırlı bir çağıran-thread callback'iyle girdi sırasında teslim eder
Bildirim
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 ve sahiplik
Callback, çağıran thread üzerinde sıralı çalışır; sıfır tabanlı girdi konumunu, istenen sayfa indeksini, ödünç bitmap'i ve iptal flag'ini alır
Bitmap yalnızca callback süresince geçerlidir ve callback döner dönmez serbest bırakılır; sonuç bu çağrıdan uzun süre yaşamalıysa bitmap'i callback içinde kopyalayın veya encode edin
Yeni sayfa talebini durdurmak, bekleyen worker'ları uyandırmak, in-flight işleri beklemek, yayınlanmamış sonuçları serbest bırakmak ve tamamlanan callback sayısını döndürmek için Cancel değerini ayarlayın
Callback iptali, o dahili uyandırmayı hataya çevirmeden bellek rezervasyonu bekleyen worker'ları da uyandırır; harici bir iptal token'ı veya callback istisnası, temizlikten sonra yine başarısızlık bildirir
Backpressure
OutputQueueDepth, callback'te aktif olan bitmap dahil tamamlanmış bitmap sayısını sınırlar; birden küçük değerler etkin worker sayısını seçer, sayfa sayısından büyük değerler kırpılır
Scheduler, sıradaki zorunlu girdi konumu için çıktı kapasitesi rezerve eder; böylece daha geç gelen sayfalar, önceki bir sayfa daha yavaş derlendiğinde kuyruğu doldurup sıralı ilerlemeyi bloklayamaz
PeakMemorySchedulerEnabled açıkken istenen paralellik, en büyük sayfa tahmini ve o anki kullanılabilir global bütçeden düşürülür; her sayfa rezervasyonu, iş talep edildiğinden ödünç bitmap callback'ten çıkana kadar aktif kalır
Bellek rezervasyonları, paralel derleme ve render'dan önce girdi sırasına göre talep edilir; böylece sonraki sayfalar, sıradaki callback'in ihtiyaç duyduğu bütçeyi alamaz
Böylece kuyruktaki çıktı, aktif derleme ve playback ile aynı process genelindeki bütçe için adil biçimde yarışır; iptal veya hata durumunda ise yayınlanmamış rezervasyonlar worker'lar beklenmeden önce serbest bırakılır
Worker'lar aktifken callback belgeyi değiştirmemeli veya yok etmemelidir
THPDFParallelRenderPipelineInfo · Display List'ler ve Baskı Üretimi