Я работаю с базой кода С++ среднего размера, которая в настоящее время полностью однопоточная. Однако пришло время преследовать concurrency и parallelism для повышения производительности. Меня очень интересует модель языка программирования Google Go concurrency, с очень легкими goroutines и системой каналов связи.
К сожалению, по целому ряду вполне обоснованных причин проект должен оставаться на С++. Поэтому мой вопрос: есть ли библиотека С++, которая аппроксимирует парадигму Go для parallelism? В частности, существует ли приближение goroutines или каналов, доступных для С++? Мой резервный план - просто использовать boost:: thread.
Данное приложение представляет собой долгосрочную проприетарную симуляцию для домена финансового прогнозирования. Он обычно связан с процессором, но также блокируется при IO при появлении новых данных. Многие из рассматриваемых вычислений не зависят от предыдущих результатов и могут быть довольно легко выполняться параллельно. Возможность запуска приложения в распределенном контексте - это долгосрочная цель, но не та, которая должна быть решена немедленно.