协程及其实现
协程没有多线程的上下文切换消耗,适合IO密集型程序。state静态变量保存了函数上次调用的位置(可以理解为协程的“堆栈”),再利用c/c++的goto语言特性,我们实现了协程。对于这种输出,ThreadA和ThreadB就像是两个独立的线程在运行。那么,如何实现这种输出即如何实现协程呢?通过coctx_swap(ctx1, ctx2)就实现了跳转到ctx2中的函数上去执行。libco的使用见项目。libo是利用函数调用栈特点实现的开源协程库。这是一个开源C协程库,有效代码不足100行,原理和上面讲的类似。
原创
2023-07-25 16:50:07 ·
97 阅读 ·
1 评论