Template Class AsioIntegrationManager
Defined in File asio_integration_demo.cpp
Class Documentation
-
template<typename State>
class AsioIntegrationManager 使用 boost.asio 的异步积分器包装器
这个示例展示了如何将 boost.asio 与我们的积分器结合使用, 实现 ODE 计算完成后的异步任务处理,如数据分析、参数调整、轨迹保存等。
设计理念:
利用 boost.asio 的成熟异步设施,避免重复发明轮子
专注于 ODE 计算完成后的任务编排,而不是积分器内部的异步化
支持高并行度的 ODE 运算后的数据分析流程
Public Functions
-
inline AsioIntegrationManager(std::unique_ptr<diffeq::core::AbstractIntegrator<State>> integrator, size_t thread_count = std::thread::hardware_concurrency())
构造函数
- Parameters:
integrator – 积分器实例
thread_count – 线程池大小
-
inline ~AsioIntegrationManager()
析构函数 - 确保所有任务完成
-
template<typename PostTask>
inline void integrate_async(State initial_state, typename diffeq::core::AbstractIntegrator<State>::time_type dt, typename diffeq::core::AbstractIntegrator<State>::time_type end_time, PostTask &&post_integration_task) 异步执行积分任务
- Parameters:
initial_state – 初始状态
dt – 时间步长
end_time – 结束时间
post_integration_task – 积分完成后的回调任务
-
template<typename TaskList>
inline void integrate_batch_async(TaskList &&tasks) 批量执行多个积分任务
- Parameters:
tasks – 任务列表,每个任务包含初始状态、积分参数和后处理函数
-
inline void run(std::chrono::milliseconds timeout = std::chrono::milliseconds::max())
运行事件循环
- Parameters:
timeout – 超时时间(可选)
-
inline void wait_for_all_tasks()
等待所有任务完成
-
inline std::pair<size_t, size_t> get_progress() const
获取完成统计
-
inline void reset_stats()
重置统计