THotPDF.RenderLoadedPagesParallelOrdered Method
Компилира и изобразява заредени страници едновременно, като доставя завършените bitmaps във входния ред чрез ограничен callback на извикващата нишка
Декларация
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 и собственост
Callback се изпълнява серийно на извикващата нишка с позиция във входа, започваща от нулата, заявен индекс на страница, заета bitmap и флаг за отмяна
Bitmap-ът е валидна само по време на изпълнение на callback и се освобождава непосредствено след връщането му, затова я копирайте или кодирайте вътре в callback, когато резултатът трябва да надживее това извикване
Задайте Cancel, за да спрете заявяването на нови страници, да събудите блокираните workers, да изчакате текущата работа, да освободите непубликуваните резултати и да върнете броя завършени callbacks
Отмяната на callback събудява и workers, чакащи за резервация на памет, без това вътрешно събуждане да се превръща в грешка; външен cancellation token или изключение в callback пак докладва неуспех след почистването
Обратен натиск
OutputQueueDepth ограничава завършените bitmaps, включително bitmap-а, активен в callback; стойности под една избират действителния брой workers, а стойности над броя страници се ограничават до него
Scheduler-ът резервира изходен капацитет за следващата необходима входна позиция, така че по-късните страници не могат да запълнят опашката и да блокират подредения напредък, когато по-ранна страница се компилира по-бавно
С PeakMemorySchedulerEnabled заявената паралелност се намалява според оценката за най-голямата страница и наличния в момента глобален бюджет, а всяка резервация на страница остава активна от заявяването на работата до напускането на заетата ѝ bitmap от callback
Резервациите за памет се заявяват във входния ред преди паралелната компилация и рендиране, така че по-късните страници не могат да отмъкнат бюджета, нужен на следващия callback
Поставеният на опашка изход така се конкурира справедливо с активната компилация и възпроизвеждане за един и същ бюджет в целия процес, докато отмяната или неуспех освобождават непубликуваните резервации, преди да изчакат workers
Callback не трябва да променя или унищожава документа, докато workers са активни
THPDFParallelRenderPipelineInfo · Display списъци и печатно производство