协程是什么
有一种观点:协程就是函数调用栈。每增加一个协程,就增加一个函数调用栈。
这个是从实现的角度来解释协程,确实可以让大家清楚协程实现的原理。
通常来说,每调用一个函数都会生成一个调用栈帧,记录函数执行时需要的各种信息,函数退出时销毁栈帧,返回上次调用者的栈帧里接着执行。
而协程给开发者提供了在多个函数之间无中断跳转的能力:一个函数执行到一半,可以暂停,去执行另外一个函数,执行完毕后再回来从暂停处接着执行。
原来单个函数栈的方式是无法提供这样的能力的,函数要返回,必然导致栈帧被销毁,那自然无法接着执行该函数。
而每创建一个协程,就相当于多了一个函数调用栈,这个栈上面有自己的栈帧,协程的切换就相当于切换当前执行栈。这样如果要回到原来的函数执行的地方接着执行,把整个栈切换过去即可恢复函数的运行,达到不退出函数就可以切换函数的效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?