Contents

[TOC]

一、核心依赖结构

1
2
3
4
5
6
7
8
graph TD
    A[co模块] --> B[Boost.Asio]
    A --> C[STDEXEC/UNIFEX]
    A --> D[框架执行器]
    C --> E[并发TS]
    D --> F[线程池]
    D --> G[定时器]
    A --> H[异常处理]

二、详细依赖说明

1. 核心库依赖

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 异步操作基础(必选)
#include <boost/asio/dispatch.hpp>            // 跨线程调度
#include <boost/asio/steady_timer.hpp>       // 定时器支持

// 协程后端二选一
#ifdef AIMRT_EXECUTOR_USE_STDEXEC
  #include <stdexec/execution.hpp>           // C++标准执行库
#else
  #include <unifex/scheduler_concepts.hpp>  // 通用协程库
#endif

2. 内部模块依赖

executor

1
2
3
4
依赖框架核心模块:
src/runtime/core/executor/     执行器实现
src/common/util/logger_wrapper.h 日志系统
src/common/net/               网络基础组件

3. 工具类依赖

function.h

1
2
3
// 函数包装器
#include "util/function.h"      // 通用函数包装
#include "util/type_traits.h"  // 类型特征检测

三、条件编译说明

task.h 中:

1
2
3
4
5
#ifdef AIMRT_EXECUTOR_USE_STDEXEC
  #include <exec/task.hpp>     // 标准执行任务
#else
  #include <unifex/task.hpp>  // 跨平台协程任务
#endif

通过编译开关 AIMRT_EXECUTOR_USE_STDEXEC 控制协程后端选择

四、外部文档依赖

coroutine.md

1
2
3
4
文档依赖项:
- 协程TS规范文档
- Boost.Asio异步模型
- 执行器设计模式说明

需要了解如何配置不同的协程后端(STDEXEC/UNIFEX)的具体编译参数吗?