...
- В потоке main:
- Получает от процесса 1 сообщения (MQ) с командами на обработку.
- Читает входные данные из MMF от процесса 1.
- Для каждого запроса запускает рабочий поток на обработку (большие копирования данных здесь, мне кажется, не нужны; также см. статьи по структурам данных на стр. Неоднородная параллелизация).
Примечание: запускать не более 4 рабочих потоков одновременно, остальные приходящие запросы ставить в очередь.
- i-ый рабочий поток:
- Сглаживает изображение маской Гаусса (см. примерпроект-заготовку ниже).
- Отправляет процессу 1 сообщения (MQ) о прогрессе внутри изображения и об окончании обработки.
- Организует передачу процессу 1 обработанного изображения через общую память (ShMem). Служебную информацию передавать сообщениями (MQ). Синхронизироваться с процессом 1 с помощью семафоров.
...
Поскольку процесс 1 передаёт изображение напрямую из файла, можно выбрать любой удобный формат файла изображения (или библиотеку, способную вычитывать форматы из памяти, не по имени файла; вообще Qt это умеет, как я помню).
Пример
<чуть позже...>Заготовка: img.zip