Skip to content

这是一种为内存极度受限的系统设计的轻量级无栈协程框架

License

Notifications You must be signed in to change notification settings

uwyciw/Coroutine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coroutine

English Readme is here.

这是一种为内存极度受限的系统设计的轻量级无栈协程框架。

特色

  • 无栈:这是最核心的特点,传统线程每个都有独立栈空间,而Coroutine复用单一栈,仅通过状态变量记录执行位置,内存占用极低(通常仅需几个字节的状态变量);
  • 轻量级:无线程栈开销,创建/切换成本几乎可以忽略,适合资源紧缺的场景;
  • 伪阻塞:支持在C函数内实现阻塞逻辑,但阻塞的本质是状态暂停,仅记录当前执行位置,不保存任务其他状态(如局部变量值等);
  • 灵活适配:可配合RTOS使用,也可直接运行在裸机的事件驱动框架上;

原理

Coroutine的核心是借助C语言的switch-case语法,通过宏定义状态变量,将一段线性程序,分割为多个代码片段,当遇到阻塞条件后,若条件不满足,程序会��该阻塞点退出,当函数再次被调用时,程序会在阻塞点继续判断阻塞条件,直到阻塞条件得到满足,才会执行下一个代码片段,从而实现协程的暂停和恢复。

About

这是一种为内存极度受限的系统设计的轻量级无栈协程框架

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages