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