M
Та і заводити під паралельне виконання цілий процес - тоже безсмислено. Тут треба шось максимально легковісне, де можна виконувати обчислення.
Підходить воркрер-тред.
І теж в тій кількості, скільки є фактично ядер (в т.ч. віртуальних).
Далі можна створити пул воркерів, асинхронну чергу задач, і закидати задачі в воркери по доступності.
Це буде оптимальний варіант.
Но якщо в програмі паралельно ще має щось робитися (слухатись сокети і тд), то є сенс створити ще додатковий воркер для цих цілей.
Сейчас попробую пересмотреть логику приложения, и попробую чтото вынести в воркер тред. возможно это будет более оптимально.