Phương thức THotPDF.RenderLoadedPagesParallelOrdered
Biên dịch và dựng hình các trang đã nạp đồng thời trong khi giao các bitmap hoàn tất theo thứ tự đầu vào qua một callback luồng gọi có giới hạn
Khai báo
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 và quyền sở hữu
Callback chạy tuần tự trên luồng gọi với vị trí đầu vào dựa trên 0, chỉ mục trang được yêu cầu, bitmap mượn và cờ hủy
Bitmap chỉ hợp lệ trong thời lượng callback và được giải phóng ngay sau khi callback trả về, vì vậy hãy sao chép hoặc mã hóa nó bên trong callback khi kết quả phải tồn tại lâu hơn lần gọi đó
Đặt Cancel để ngừng nhận các trang mới, đánh thức các worker bị chặn, tham gia công việc đang bay, giải phóng các kết quả chưa công bố và trả về số callback đã hoàn tất
Hủy qua callback còn đánh thức các worker đang chờ một lượt dự trữ bộ nhớ mà không biến lời đánh thức nội bộ đó thành lỗi; token hủy từ bên ngoài hay exception trong callback vẫn báo thất bại sau khi dọn dẹp
Áp lực ngược
OutputQueueDepth giới hạn các bitmap hoàn tất bao gồm bitmap đang hoạt động trong callback; các giá trị dưới một chọn số worker hiệu dụng và các giá trị trên số trang bị kẹp
Bộ lập lịch dự trữ công suất đầu ra cho vị trí đầu vào bắt buộc tiếp theo, vì vậy các trang sau không thể lấp đầy hàng đợi và chặn tiến trình có thứ tự khi một trang trước biên dịch chậm hơn
Với PeakMemorySchedulerEnabled, độ song song được yêu cầu được giảm từ ước tính trang lớn nhất và ngân sách toàn cục hiện khả dụng, và mọi dự trữ trang vẫn hoạt động từ khi nhận công việc cho đến khi bitmap mượn của nó rời khỏi callback
Dự trữ bộ nhớ được yêu cầu theo thứ tự đầu vào trước khi biên dịch và dựng song song, nên các trang sau không thể lấy mất ngân sách mà callback kế tiếp cần
Do đó đầu ra xếp hàng cạnh tranh công bằng với việc biên dịch và phát lại đang hoạt động cho cùng một ngân sách toàn tiến trình, trong khi hủy bỏ hoặc thất bại giải phóng các dự trữ chưa công bố trước khi tham gia các worker
Callback không được làm thay đổi hoặc hủy tài liệu trong khi các worker đang hoạt động
THPDFParallelRenderPipelineInfo · Danh sách hiển thị và sản xuất in