Template Class AsioIntegrationManager

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()

重置统计