这个库浑身都是优点 ---
- 全c和汇编实现,紧凑小巧又不失实用,并且不需要c++。
- 协程切换代码来自boost汇编,性能极好,稳定可靠,移植性好,几乎全平台支持。
- 和libuv(稍作修改)无缝融合,完美支持跨平台网络编程。
- 支持 __await__ , __async__ 关键词,含义和用法都其他语言的await/async相同 --
- 没有调用 await 函数的地方,协程肯定不会被切换出去,可确保共享数据不会被其他协程改变。
- 具备传染性,能调用 await 的函数,一定在一个 async 函数里。这个async 函数需要用 await 调用。
- 支持协程间的event变量和mutex锁,方便不同协程间同步数据和状态。这个方式比其他协程resume函数更好用和可控。
- 除支持windows, linux, macos这些常规环境外,更能为stm32等嵌入式小芯片环境提供多任务支持(注:小芯片环境下不支持libuv)。
- 嵌入式小芯片版本没有动态内存分配,增加程序大小不到2k, 不增加程序空间负担。
2020/04/05更新:增加 arduino uno支持。
2020/04/11更新:增加 stm8l051f3 支持,华为 鲲鹏920 arm64 支持。
2020/04/12更新:增加 类似go语言的chan,方便协程间交换数据。
2020/05/02更新:增加 freebsd 12.1,arduino due 和 riscv64/linux支持。
目前支持的平台有: windows, linux, uclinux, freebsd, macos, android ndk, mingw, stm8, stm32, m051, arduino uno(atmel MEGA328P), arduino due。可能是能够运行平台最多的协程多任务库。
MIT开源授权,源码地址,https://github.com/xhawk18/s_task
下面是用协程实现的 libuv http客户端的例子
|