首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
协程
南北是北北
创建于2025-09-04
订阅专栏
协程入门
暂无订阅
共16篇文章
创建于2025-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
协程中的Dispatcher
1) Dispatcher 是什么 CoroutineDispatcher 实质是 ContinuationInterceptor: 决定协程在哪个线程(池)执行与恢复; 调度策略(立即/投递、队列、
当协程的某个async失败之后,剩余的其它的会执行完还是会立刻取消?
短答:默认会立刻取消。 在同一个(非监督的)协程作用域里,任意一个 async 失败(抛出未捕获异常)会取消父作用域,其兄弟协程随即被取消;它们会在下一个可取消挂起点(如 delay/IO/emit/
协程总纲:从底层到高层
0) 本体与大图 协程 = 可挂起/可恢复的函数,编译为CPS + 无栈状态机:局部变量进堆对象,label 记录继续点。 核心三要素:Continuation(续延/状态机入口)、Dispatche
线程上下文与 ThreadContextElement
为什么要“线程上下文” 协程会在不同线程间切换:一次 suspend/resume 可能从 A 线程恢复到 B 线程。 传统 ThreadLocal 只跟线程走,不跟协程走 ⇒ 一旦线程切换就“丢上下
协程 Channel 与 Actor(单播/强背压)
1) Channel 的语义与定位(单播 + 背压原语) 单播(unicast) :一个元素只会被一个接收者消费。你可以 fan-in(多生产者)或 fan-out(多消费者“抢”同一条管道),但同一
Flow 内部与“运算符融合(Operator Fusion)”
1) Flow 内部大模型(先有这个心智图) 冷流:每次 collect 都从头再建一条“处理链”。 链式组装:绝大多数中间运算符(map/filter/transform/onEach/scan/d
协程真正的“挂起点”:suspendCoroutine 与 suspendCancellableCoroutine
1) 它们在协程体系里的位置 作用:把回调式/异步API“桥接”成 suspend,从而能写出同步风格。 本质:在这里创建并拿到当前挂起点的 Continuation,由你在未来某个时刻调用 resu
协程取消传播与 Job 状态机
一、Job 状态机(简化但够用) New:只在 CoroutineStart.LAZY 出现,未启动。 Active:运行中,job.isActive = true。 Completing:主体代码结
协程中的Deferred
1) 它是什么:带“结果”的 Job Deferred : Job —— Job + 一个将来可用的结果 T。 典型来源:async { /* 计算并 return T */ }。 读取结果的“正门”
协程中的Job
Job 是什么? Job = 协程的生命周期句柄:表示一段协程工作是否开始、是否还在运行、是否已取消/完成。 作用:管理与观测(cancel / join / isActive / invokeOnC
协程async vs launch 的异常与结果学
1. 核心差异一览 维度 launch async 返回类型 Job(无结果) Deferred(Job 的子类型,有结果) 获取结果 无;只能 join() 等它结束 await() 拿 T(或抛出
Kotlin 协程的“调度与拦截”机制
核心总览 Continuation:每个 suspend 在编译后都会多一个 Continuation,恢复时通过 resumeWith 继续执行“状态机”。 ContinuationIntercep
调用栈(call stack)与“栈无关 / 无栈(stackless)协程
一、调用栈是什么,为什么需要它 调用栈 = 运行时为每个函数调用分配的一块“栈帧(stack frame)” ,里面放:返回地址、形参与局部变量、临时寄存器保存、异常处理信息等。 函数调用:压入新栈帧
CPS:它是什么、为什么有用、怎么写、和协程/suspend 的关系、优缺点与常见应用
什么是 CPS(Continuation-Passing Style,续延传递风格) 定义:在 CPS 中,函数不直接返回结果;它把“接下来要做什么”(称为续延、continuation)当作额外的函
为什么协程要用状态机机制
1) 本质:要“挂起再恢复”,就必须保存执行现场→ 自然变成“状态机” 协程允许你在函数中途挂起,稍后在同一源位置继续往下跑。 这等价于把一次线性执行拆成多段:“跑到挂起点 → 存档 → 稍后读档续跑
协程suspend 如何被编译成“状态机”
1) 大图景:CPS 改写 + 堆上栈(stackless) 思想:suspend 会被编译器做 Continuation-Passing Style (CPS) 转换—— 原本“直接返回”的函数,被