Обработка нескольких изображений с использованием Parallel и Task
Я пишу приложение формы C# windows, которое обеспечивает сквозную систему обработки изображений. Система состоит из множества блоков обработки изображений (т. Е. Масштабатора, шумоподавления,...), каждый блок представляет собой алгоритм, написанный на C, и я встроил каждый из них в библиотеки DLL и вызываю их из моего приложения на C#,
Моя система примерно такая:
(main) input1 -> block1 -> block2
(ig) input2 -> block3 -> block4 -> MUX -> output
(pg) input3 -> block5 -> block6
На данный момент код, который я использую, выглядит следующим образом:
Task.Factory.StartNew(() => Parallel.For(0, loop_num, i =>
{
Parallel.Invoke(
() =>
{
main(i);
},
() =>
{
ig(i);
},
() =>
{
pg(i);
}
);
mux(i);
}), TaskCreationOptions.LongRunning);
Но я вижу, что приложению требуется очень много времени, чтобы завершить всего несколько изображений. На самом деле я не очень хорош в C# и просто изучаю параллели и задачи на нескольких примерах.
Я не знаю, достаточно ли хорош мой код для обработки множественной обработки, или есть лучший способ? Поэтому я начинаю эту тему в поисках помощи / предложения.