Операции ввода-вывода файлов открытия / чтения / записи - это те, которые приводят к простоям вашего процессора
при обработке изображения это обычно матричные умножения и занимает много ресурсов процессора и может выполняться параллельно на основе ядер процессора (дает или берет 2 * ядра)
Я предлагаю использовать разные пулы потоков в зависимости от задачи, для обработки файла вы можете создать столько потоков, сколько захотите, без значительного снижения производительности, но обработка изображения, т. Е. Выполнение вычислений с байтовым массивом, может быть масштабирована до процессорные ядра, выше которых вы должны заметить снижение производительности
Я предлагаю использовать образец рабочей очереди, описать здесь
вы также можете взглянуть на реализацию цикла событий, которая может дать лучшие результаты из-за ее природы неблокирования, вы можете найти пример здесь
имейте в виду, что для полного использования ядер процессора необходимо создать несколько потоков циклов событий, по одному (или двум) на ядро, потоки автоматически масштабируются (большинство ОС) на ядрах процессора