Open dpinthinker opened 4 years ago
https://dpthinker.top/2020/02/16/coroutine-talking-code-ananlyze/
“Talk is cheap. Show me the code.” ― Linus Torvalds.
在上篇文章,我们介绍了协程的基本概念,现在我们借用云风设计和实现的C协程库,对协程进行更深入剖析,相信这篇文章可以让大家更深入更清晰了解协程本质。 一、极简协程库在github上搜索coroutine,第一个仓便是cloudwu/coroutine,简单看后发现设计极简,代码相当的少,是用来研究协程的绝佳例子。 整个库只有两个文件:一个头文件coroutine.h和一个实现文件coroutine.c,总共191行代码。 1-------------------------------------------------------------------------------2Language files blank comment code3-------------------------------------------------------------------------------4C 1 17 0 1755C/C++ Header 1 6 0 166-------------------------------------------------------------------------------7SUM: 2 23 0 1918-------------------------------------------------------------------------------
cloudwu/coroutine设计的是Asymmetric coroutine,所谓Asymmetric coroutine就是提供了两个接口(invoke和suspend)用于协程调度。对应的,Symmetric coroutine就是提供了一种切换接口的协程。
测试评论
https://dpthinker.top/2020/02/16/coroutine-talking-code-ananlyze/
“Talk is cheap. Show me the code.” ― Linus Torvalds.
在上篇文章,我们介绍了协程的基本概念,现在我们借用云风设计和实现的C协程库,对协程进行更深入剖析,相信这篇文章可以让大家更深入更清晰了解协程本质。 一、极简协程库在github上搜索coroutine,第一个仓便是cloudwu/coroutine,简单看后发现设计极简,代码相当的少,是用来研究协程的绝佳例子。 整个库只有两个文件:一个头文件coroutine.h和一个实现文件coroutine.c,总共191行代码。 1-------------------------------------------------------------------------------2Language files blank comment code3-------------------------------------------------------------------------------4C 1 17 0 1755C/C++ Header 1 6 0 166-------------------------------------------------------------------------------7SUM: 2 23 0 1918-------------------------------------------------------------------------------
cloudwu/coroutine设计的是Asymmetric coroutine,所谓Asymmetric coroutine就是提供了两个接口(invoke和suspend)用于协程调度。对应的,Symmetric coroutine就是提供了一种切换接口的协程。