s丅7318是啥芯片_s_task,一个全新的c语言协程库

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:17   996   0

这个库浑身都是优点 ---

  1. 全c和汇编实现,紧凑小巧又不失实用,并且不需要c++。
  2. 协程切换代码来自boost汇编,性能极好,稳定可靠,移植性好,几乎全平台支持。
  3. 和libuv(稍作修改)无缝融合,完美支持跨平台网络编程。
  4. 支持 __await__ , __async__ 关键词,含义和用法都其他语言的await/async相同 --
    1. 没有调用 await 函数的地方,协程肯定不会被切换出去,可确保共享数据不会被其他协程改变。
    2. 具备传染性,能调用 await 的函数,一定在一个 async 函数里。这个async 函数需要用 await 调用。
  5. 支持协程间的event变量和mutex锁,方便不同协程间同步数据和状态。这个方式比其他协程resume函数更好用和可控。
  6. 除支持windows, linux, macos这些常规环境外,更能为stm32等嵌入式小芯片环境提供多任务支持(注:小芯片环境下不支持libuv)。
  7. 嵌入式小芯片版本没有动态内存分配,增加程序大小不到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客户端的例子

0a80fb1f994a2f232aa0bb79f4d0e24d.png
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP