Доброго дня! Есть большой cfd-код (cfd==computational fluid dynamics), общее время работы которого измеряется сутками. Работает на удаленных серверах, под MPI, состоит из главного цикла с разной вычислительной требухой внутри. В секунду успевает пройти от нескольких до нескольких сотен циклов (зависит от сетки). Хочется из локальных клиентов иногда «заглядывать» в этот счет (сервер), на предмет опроса его состояния. Однако, тормозить вычисления никак нельзя.
Решил познакомиться с boost.asio. Однако, для реагирования на запросы клиентов, нашёл там только возможность параллельно с моим вычислением запустить thread с io_service, чей бесконечный цикл обработки, боюсь, загрузит мне одно из ядер, чего хотелось бы избежать. Представляется, что решением было бы совместить мой вычислительный цикл с циклом обработки событий класса io_service.
Конечно, правильным было бы учить новую для меня матчасть и тестировать разные тесты - вы, безусловно, правы - но осмелюсь, экономии времени ради, задать вопрос.
Вопрос. Есть ли в boost возможность в конце каждого моего вычислительного цикла в том же потоке по-быстрому проверить не хочет ли кто-то чего-то от сервера, прочитать запросы, на завершённые отправить ответы и больше не отнимать у процессора время до окончания следующего вычислительного цикла? Если возможно, подскажите, пожалуйста, чем в boost воспользоваться.
Заранее спасибо!