205-协程与 Flow 入门
05 协程与 Flow 入门这一章解决“理解协程到底是什么、和线程什么关系,能写出基本的后台加载 + 切主线程,并理解 Flow 冷流”。这里只做入门,深挖(调度细节、异常传播、背压、测试)放在第 08 模块threading-and-coroutines。1. 协程和线程的关系先建立最重要的直觉:协程不是线程,是运行在线程之上的、可挂起的任务。维度线程(Thread)协程(Coroutine)由谁调度操作系统Kotlin 运行时 + 协程库成本重(MB 级栈、内核切换)轻(对象级别,可同时几万个)阻塞代价占住一个线程挂起时释放线程去干别的关系协程在线程上执行一个线程可轮流跑很多协程关键点:当协程遇到suspend挂起(如等网络返回)时,它会让出当前线程,线程去执行别的协程;等结果就绪后,协程再被恢复到某个线程上继续。这就是协程“用少量线程支撑大量并发”的原理,也是它比“一个任务一个线程”高效的原因。suspend挂起的是协程,不是线程。这是初学最容易搞混的点。2. suspend 函数suspend标记“这个函数可能会挂起,必须在协程或另一个 suspend 函数里调用”。suspendfunloadUser(id:Long):User{returnapi.fetchUser(id)// 网络请求,挂起等待,不阻塞线程}普通函数不能直接调suspend函数。suspend函数写起来像同步代码(顺序、无回调),但执行是非阻塞的。suspendfunloadProfile(id:Long):Profile{valuser=loadUser(id)// 顺序写,但每步可挂起valorders=loadOrders(id)returnProfile(user,orders)}这就是协程最大的卖点:用同步的写法表达异步逻辑,消灭回调地狱。3. CoroutineScope 与启动协程必须在一个CoroutineScope里启动。scope 管理协程的生命周期——scope 取消时,里面所有协程一起取消。scope.launch{valuser=loadUser(1)updateUi

相关新闻

Python操作PDF附件添加查看与管理指南

Python操作PDF附件添加查看与管理指南

在日常文档处理工作中,PDF 附件功能有着广泛的应用场景。例如,将合同原文与相关证明材料打包在同一个 PDF 文件中,或在技术文档中附上对应的数据文件和图片。手动操作虽然可行,但当需要批量处理大量文档时,效率就会成为…

2026/6/26 22:53:43阅读更多 →
IMX6ULL Qt 项目(控制led灯和蜂鸣器)全流程

IMX6ULL Qt 项目(控制led灯和蜂鸣器)全流程

一、网络搭建(我是连接网线的) 打开虚拟机设置,采用双适配器(一个选用桥接,一个选用NAT): 然后主机就打开控制面板的网络连接(我们需要的就是以太网2下面的这个NXUSB2.0&#xff09…

2026/6/26 22:53:43阅读更多 →
工作的目的的庖丁解牛

工作的目的的庖丁解牛

它的本质是:**工作不是“出卖时间”,而是 “将个人算力(技能/精力)封装成服务,通过市场接口交付,以换取生存资源和发展资本”的商业行为。 核心矛盾:社会叙事常将工作道德化(勤劳光荣…

2026/6/26 22:48:42阅读更多 →
终极指南:如何在Blender中轻松导入Rhino 3DM文件

终极指南:如何在Blender中轻松导入Rhino 3DM文件

终极指南:如何在Blender中轻松导入Rhino 3DM文件 【免费下载链接】import_3dm Blender importer script for Rhinoceros 3D files 项目地址: https://gitcode.com/gh_mirrors/im/import_3dm 你是否在寻找将Rhino 3D文件无缝导入Blender的解决方案&#xff1f…

2026/6/27 0:14:04阅读更多 →
调查研究-198 Agent 到底该记住什么?读懂《What Must Generalist Agents Remember?》

调查研究-198 Agent 到底该记住什么?读懂《What Must Generalist Agents Remember?》

Agent 到底该记住什么?读懂《What Must Generalist Agents Remember?》 TL;DR 场景:通用 Agent 在多目标、多隐藏环境下,仅靠当前观察无法区分状态,需依赖记忆结论:记忆不是日志,而是消除隐藏状态不确定性…

2026/6/27 0:14:04阅读更多 →
Olist电商数据分析实战:从数据清洗到商业洞察全流程解析

Olist电商数据分析实战:从数据清洗到商业洞察全流程解析

1. 项目概述:从零开始理解Olist电商数据分析平台如果你在电商行业待过,或者对数据驱动业务增长感兴趣,那你大概率听说过或者接触过“Olist”这个名字。它不是一个直接面向消费者的购物网站,而是一个在数据科学和商业分析领域声名鹊…

2026/6/27 0:14:04阅读更多 →
StarRailAssistant终极指南:3步实现崩坏星穹铁道全自动游戏体验

StarRailAssistant终极指南:3步实现崩坏星穹铁道全自动游戏体验

StarRailAssistant终极指南:3步实现崩坏星穹铁道全自动游戏体验 【免费下载链接】StarRailAssistant 崩坏:星穹铁道自动化 | 崩坏:星穹铁道自动锄大地 | 崩坏:星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: https://gi…

2026/6/27 0:14:04阅读更多 →
ComfyUI-Manager InvalidChannel错误深度解析:从故障诊断到通道验证完整方案

ComfyUI-Manager InvalidChannel错误深度解析:从故障诊断到通道验证完整方案

ComfyUI-Manager InvalidChannel错误深度解析:从故障诊断到通道验证完整方案 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and…

2026/6/27 0:14:04阅读更多 →
企业级Pig系统安全加固实战:XSS立体防御与端到端数据加密

企业级Pig系统安全加固实战:XSS立体防御与端到端数据加密

1. 项目概述:为什么Pig系统的安全防护值得你投入精力?如果你正在负责一个基于Pig框架(这里指代一个常见的、用于快速构建后台管理系统的开源脚手架,而非Apache Pig大数据处理平台)开发的企业级应用,那么“安…

2026/6/27 0:09:04阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →