Обработка нескольких изображений с использованием 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# и просто изучаю параллели и задачи на нескольких примерах.

Я не знаю, достаточно ли хорош мой код для обработки множественной обработки, или есть лучший способ? Поэтому я начинаю эту тему в поисках помощи / предложения.

0 ответов

Другие вопросы по тегам