资讯详情

第088篇 协程入门:suspend 到底挂起了谁

📅 2026/10/6 8:09:25 | 华诺云谱 👁 阅读
第088篇 协程入门:suspend 到底挂起了谁
协程这题的基础门槛不高——launch、async、suspend谁都会写。真正区分开的是"挂起"这件事到底挂起了什么:挂起的是协程(一个轻量状态机),不是线程;线程在挂起期间是空闲可复用的。这个认知一旦建立,协程的所有设计就都说得通了。这篇按"是什么 → 怎么执行 → 怎么落地"三步讲。先把结论放在前面:协程是用户态的轻量并发单元,本质是一个被编译器改写为状态机的suspend函数。suspend函数被编译成(Object continuation, int flags) - Object这样的方法签名——参数里多了 continuation,返回值是Object(协程挂起时是COROUTINE_SUSPENDED)。这解释了协程为什么"挂起不占线程":线程执行到挂起点就返回,把 CPU 让给别人,恢复时再进来。机制拆解launch返回Job(只管生命周期,不返回值)、async返回DeferredT(是Job的子类,能await()拿结果)、run是普通函数写法。三个"启动"函数的差别只在返回值类型,取消与异常传播的规则完全一致/
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑