kotlin的协程,kotlin协程实现原理

  kotlin的协程,kotlin协程实现原理

  新书快递

  

Kotlin协程

现在是个大麻烦。国内外没有好的资料,官方文档过于简洁,不适合大家入门和进阶。今天推荐一本新书

《深入理解Kotlin协程》

,作者是科特林先锋和需要陪伴的传统毛豆。

  本书以Kotlin v1.3.61为基础,讲解了Kotlin协同学的基本概念、实现原理和实用技巧。本文从异步程序的设计入手,讨论了异步程序设计中的关键问题,然后围绕这些关键问题讨论了Kotlin协同流程的设计与实现。

  本书在分析Kotlin协同学的过程中,不仅介绍了API的基本用法,还提供了利用Kotlin协同学设计实现各种复合协同学API的思路和方法,并抽象出一套系统化的设计思路,可以通过CoroutineLite的设计来实现,帮助您深入理解协同学官方框架的内部运行机制。

  本书在帮助读者掌握科特林协同学内在原理的同时,还从Android、Web应用、多平台等角度提供了实用思路,帮助读者深入浅出地理解原理,在实战中融会贯通。

  为了便于内容的展开,在讨论的过程中,本书还对一些概念进行了明确的定义和总结,如简单协同学、复合协同学、协同学等等。

  本书适合有一定基础的Kotlin开发者,包括但不限于正在使用Kotlin,并希望使用Kotlin开发Android、Web服务、iOS、前端等应用的人。

  内容简介

  这是一本从

工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架、应用案例

等多个维度全面阐述科特林协同学的专著。它还提供了多语言视角,你也可以通过这本书了解其他语言的协同学。

  本书由9章组成:

  第一章从协同学的核心应用场景——异步编程的思想和关键问题入手,介绍了科特林协同学的概念。

  第2章首先介绍协同学的概念和分类,然后说明协同学在Python、Lua、Go等语言中的实现和比较。

  第3~4章以Kotlin标准库的协同学API为核心,阐述了简单协同学的用法和运行机制,以及通过简单协同学设计和实现复合协同学的思想和方法。

  第5~6章以Kotlin的官方协同框架为模板,通过逐步实现其核心功能,分析复合协同框架的实现细节和运行机制,并对框架的使用进行深入探讨;

  第7~8章讲解了协成在Android应用开发和Web服务开发中的应用场景、面临的挑战,以及解决各种常见问题的方法和思路;

  第9章讨论了协同在JavaScript和Native等非JVM平台上的支持,以及协同在这些平台上的应用。

  作者简介

  

传统的毛豆

(Benny Huo)毕业于北京邮电大学,现任腾讯地图数据采集与研究中心移动客户端技术总监。

  资深Kotlin技术专家,国内知名Kotlin开发者,要公司的大衣。

  2016年10月,我们创办了微信官方账号Kotlin,一个微信,持续发布Kotlin相关文章和教学视频,大受欢迎。

  2017年初开始参与Kotlin中文相关网站的翻译和维护工作。

  专家推荐

  Kotlin包含了现代高级语言的很多特性,Kotlin co-process针对并发编程的痛点给出了解决方案。感谢冰淦撰写了一部关于谢城的专著。这本书内容不简单,但值得读者深入研究。

  3354

失眠的铃铛

资深安卓技术专家/《深度理解安卓》系列作者

  在中国的柯特林传教士中,本名“Bennyhuo”是众所周知的。本书介绍了科特林协同过程在各个领域的实际应用,为工程应用提供了很多思路。同时,本书进一步阐释了协同学背后的实现机制,以及不同语言之间的异同,是Kotlin编程的必读之作。

  3354

Jilen

《Kotlin核心编程》作者/水滴技术团队

  Sldjw是中国Kotlin编程的开创者,也是领先的Kotlin专家。本书内容由简单到复杂,图表简洁。不仅介绍了理论,还通过大量实例讲解了各种实战场景,一定会帮助读者深入了解Kotlin Synergy。无论你是Kotlin初学者,还是有一定Kotlin基础的人,如果你想系统地学习协同过程,这本大作绝对是必读经典。

  3354

范圣佑

JetBrains technology想要一件带人的外套。

  这本书的作者是国内深入研究科特林的开发者之一,也是国内颇具影响力的科特林想要有人陪伴的外衣。他的视频教程和原创文章很受欢迎。这本书和作者之前的作品一样,干货满满,更全面,更系统,更深入。它将引导读者深入理解协同甚至异步编程的用法、原理和编程思想。

  3354

gxdxrz

科特林中文站站长

  目录

  前言

  第1章异步编程简介1

  1.1异步的概念1

  程序的执行1

  异步和回调2

  1.1.3回调到地狱3

  1.2异步编程的关键问题4

  1.2.1结果传输4

  异常处理6

  取消响应8

  1.2.4复杂分支9

  1.3常见的异步编程思想10

  未来11

  1 . 3 . 2兼容未来11

  1 . 3 . 3承诺和异步/奖励13

  1.3.4响应式编程

  1 . 3 . 5科特林协同增效15

  1.4本章概述17

  第2章协同学的基本概念18

  2.1什么是协同18

  2.2协同学的分类20

  2.2.1按调用堆栈分类20

  2.2.2根据调度模式分类22

  2.3实现协同学的例子22

  2 . 3 . 1 python的生成器23

  2.3.2Lua协调实施Lua标准库24

  2.3.3Go的Go路线27

  2.4本章概述30

  第3章Kotlin Synergy的基础设施31

  3.1协同学的结构31

  3.1.1创建协同过程32

  3.1.2协和32的启动

  3.1.3协调机构的接收方34

  3.1.4可暂停的主功能36

  3.2暂停职能37

  暂停功能37

  3.2.2悬挂起点38

  3 . 2 . 3 CCPs转换39

  3.3协同学的背景41

  3.3.1协同背景的集体特征41

  3.3.2协同学语境要素的实施42

  3.3.3协同背景的使用43

  3.4协和45截击机

  3.4.1拦截位置45

  3.4.2拦截器的使用

  3.4.3拦截器47的执行细节

  3.5 kot Lin Synergy的类别48

  3.5.1广义和狭义的调用堆栈48

  3.5.2调度关系的对立与统一49

  3.6本章概述50

  第四章科特林协同学的拓展实践51

  4.1序列发生器51

  4.1.1类Python生成器52的实现

  4.1.2标准库56的序列发生器介绍

  4.2Promise型号57

  4 . 2 . 1 ASYC/AWAIT和SUPPORT之间的设计比较58

  4 . 2 . 2 async/await模仿JavaScript 59的实现

  4.3Lua式协同API61

  4.3.1非对称API 61的实施

  4.3.2对称API 67的实现

  4.4再谈协同学的概念72

  4.4.1简单协同和复合协同73

  4.4.2复合协同过程的实现方式73

  4.5本章概述74

  第5章发展科特林协同框架的初步研究75

  5.1开胃菜:实现延迟功能75

  5.2协同学的描述77

  5.2.1协同学的描述类别78

  5.2.2协调状态79

  5.2.3回调支持的状态80

  5.2.4协同学的初步实现

  5.3创建协同学84

  5.3.1无返回值的启动84

  5.3.2实施invokeOnCompletion85

  实施联合89

  5.3.4带返回值的异步90

  5.4协同学的时间安排92

  5.4.1协同学的执行计划92

  5.4.2协同93的调度位置

  5.4.3协同流程的调度程序设计93

  基于线程池的调度程序94

  5.4.5基于UI事件周期的调度器96

  5.4.6为协同学97添加默认调度程序

  5.5第98号议定书的取消

  5.5.1完善协同学98的取消逻辑

  5.5.2支持取消的挂起功能100

  5.5.3可取消延续的实现103

  5.5.4转换暂停功能106

  5.6协同学的异常处理109

  5.6.1定义异常处理器110

  5.6.2处理协调进程的未捕获异常111

  5.6.3区分取消例外111

  5.6.4异常处理器的应用113

  5.7协同学的范围113

  范围的概念113

  5.7.2范围声明

  5.7.3建立父子关系

  5.7.4顶级范围116

  5.

  5 . 7 . 6暂停融资主体的范围119

  5.7.7实现异常的传播120

  5.7.8主从范围121

  5.7.9完成异常处理流程122

  5.7.10父进程等待子进程完成122

  5.8本章概述123

  第6章Kotlin Synergy的官方框架124

  6.1协同框架概述124

  6.1.1框架的组成124

  6.1.2协同学126的启动模式

  6.1.3协调调度程序127

  6.1.4协调的全局异常处理程序129

  6.1.5协调的取消检查130

  6.1.6协调超时取消132

  6.1.7禁止取消

  6.2热数据通道通道134

  6.2.1了解渠道134

  6.2.2通道136的容量

  6.2.3迭代通道138

  6 . 2 . 4生产者和行动者138

  6.2.5关闭通道140

  6 . 2 . 6广播频道142

  6 . 2 . 7序列发生器的通道版本144

  6.2.8通道146的内部结构

  6.3冷数据流148

  了解流程149

  6.3.2线程切换与RxJava 150的比较

  6.3.3冷数据流151

  异常处理151

  6.3.5终端操作员153

  6.3.6分离流程153的消耗和触发

  6 . 3 . 7流程154的流程取消

  6.3.8创建其他流的方法155

  6 . 3 . 9流量背压155

  6 . 3 . 10流程157的流程转换

  6.4多路选择158

  6.4.1多路复用多个奖项158

  6.4.2多路复用多个通道160

  选择条款161

  6.4.4使用流实现复用161

  6.5并发安全性163

  6.5.1不安全的并发访问163

  6.5.2协同论的并行工具164

  6.5.3避免访问外部可变状态165

  6.6本章概述166

  第7章Kotlin协同学在Android 167上的应用

  7.1 Android 167上的异步问题

  7.1.1基于UI 167的异步问题分析

  7.1.2“鸡肋”的AsyncTask169

  7.1.3“热”回调169

  7.1.4“救赎”的RxJava170

  7.2对UI 173的协同支持

  7 . 2 . 1用户界面调度程序173

  7.2.2自动丢弃174,协调版本

  7.2.3生命周期的协作支持176

  7.3共同框架的协同延伸177

  7 . 3 . 1 RX Java 177的扩展

  7.3.2异步组件ListenableFuture179

  7 . 3 . 3标准框架室180

  7.3.4图片加载框架coil181

  7.3.5网络框架改造182

  7.3.6协同风格的对话框183

  7.4本章概述184

  第8章科特林协同学在网络服务中的应用185

  8.1多任务并发模型185

  8.1.1多流程服务模式185

  8.1.2多线程服务模型186

  8.1.3事件驱动的异步输入/输出186

  8.2协同学在多任务模型190中的应用

  8.2.1协调和异步输入/输出O191

  8.2.2指导和“轻量级线程”192

  8.3通用Web应用框架的协同流程扩展193

  8.3.1弹簧193的响应支撑

  8 . 3 . 2版本x196

  8.3千克199

  8.4本章概述203

  第9章科特林协同学在其他平台上的应用204

  9.1科特林-Js204

  9 . 1 . 1 kot Lin-JS 205概述

  9.1.2关于Kotlin-JS 209的协同学

  9.2科特林语-母语212

  9 . 2 . 1 kot Lin-Native 212概述

  9 . 2 . 2 kot Lin-Native 218的协同支持

  9.3本章概述221

  上下滑动以查看

  点击链接了解详情和购买。

  更多精彩回顾书讯七月书讯(下)宝藏新书讯助你“乘风破浪”七月书讯(上)宝藏新书助你“乘风破浪”上新周志华领衔撰写,历时4年,宝藏盒书问世!书单如何成为真正的数据分析师?这份书单是干货答案【现场回放PPT】复旦大学邱希鹏教授:如何学习深度学习合集你以为埋头生产口罩的霍尼韦尔刚刚造出世界最强量子计算机,性能超越谷歌。

kotlin的协程,kotlin协程实现原理