1.简介
async_simple 是一个开源的轻量级 C++ 异步编程库,核心目标是为 C++ 开发者提供简单、高效、低开销的异步编程能力,同时兼容 C++11+ 标准(无需等待 C++20 协程),并支持多种执行模型(协程、线程池、异步 IO 等)。提供 Lazy(无栈协程)、Uthread(有栈协程)和 Future/Promise 三种异步编程模型,广泛应用于高性能计算场景。
它的设计理念是「简单易用、零侵入、高性能」,解决了传统异步编程(回调地狱)、Boost.Asio 等库的复杂度问题,同时保持了接近原生代码的性能。
核心特性:
1.多协程模型支持
- 无栈协程(Lazy):轻量级协程,无独立栈空间,内存开销极低(仅需保存上下文),适合 IO 密集型场景(如网络请求、数据库操作)。
- 有栈协程(Uthread):拥有独立栈空间,兼容需要栈操作的场景(如第三方库调用),性能接近线程但开销更低。
- C++20 协程兼容:可无缝对接 C++20
std::coroutine_traits,支持co_await/co_return语法(需编译器支持 C++20)。
2.轻量级 Task 模型
- 异步任务载体
Task<T>/Lazy<T>,支持链式调用(then/map/flat_map),避免回调地狱。 - 支持任务取消(Cancellation)、异常传播(Exception Propagation),语义清晰。
3.灵活的执行器(Executor)
- 内置多种执行器:
- 单线程执行器(
SingleThreadExecutor):适用于串行任务。 - 线程池执行器(
ThreadPoolExecutor):适用于并行任务,支持动态调整线程数。 - 协程执行器(
CoroutineExecutor):专门调度协程任务,优化上下文切换。
- 单线程执行器(
- 支持自定义执行器:可对接用户自己的线程池或调度器。
4.异步同步原语
- 提供异步安全的同步工具,避免阻塞线程:
AsyncMutex/AsyncRWMutex:异步互斥锁,co_await lock()不会阻塞线程。AsyncConditionVariable:异步条件变量,支持co_await wait()。CountDownLatch/Semaphore:异步计数器、信号量。
5.兼容性与无侵入性
- 兼容 C++11+,无需依赖 Boost 等重型库,编译体积小。
- 可与现有同步代码无缝衔接:同步函数可通过
syncAwait转为异步调用,异步任务可通过blockOn阻塞等待结果。
6.高性能
- 无栈协程上下文切换开销接近 0(仅保存寄存器状态)。
- 任务调度无额外开销,执行器采用无锁设计,支持批量任务提交。
- 内存占用低:无栈协程仅需几十字节,线程池支持空闲线程回收。
2.安装与集成
2.1.核心依赖
async_simple 无第三方依赖,仅需满足以下基础环境:


