首页 > 资料专栏 > 经营 > 运营治理 > 其他资料 > Channel:另辟蹊径,解决并发问题PDF

Channel:另辟蹊径,解决并发问题PDF

粤教电子
V 实名认证
内容提供者
热门搜索
Channel
资料大小:3194KB(压缩后)
文档格式:PDF(26页)
资料语言:中文版/英文版/日文版
解压密码:m448
更新时间:2024/9/13(发布于广东)

类型:金牌资料
积分:--
推荐:升级会员

   点此下载 ==>> 点击下载文档


“Channel:另辟蹊径,解决并发问题PDF”第1页图片 图片预览结束,如需查阅完整内容,请下载文档!
文本描述
2020/11/15 13 | Channel:另辟蹊径,解决并发问题  下载APP  13 | Channel:另辟蹊径,解决并发问题 2020-11-09 晁岳攀 Go 并发编程实战课 进入课程  讲述:安晓辉  时长 26:07 大小 23.92M 你好,我是鸟窝。 Channel 是 Go 语言内建的 first-class 类型,也是 Go 语言与众不同的特性之一。Go 语 言的 Channel 设计精巧简单,以至于也有人用其它语言编写了类似 Go 风格的 Channel 库,比如docker/libchan、tylertreat/chan,但是并不像 Go 语言一样把 Channel 内 置到了语言规范中。从这一点,你也可以看出来,Channel 的地位在编程语言中的地位之 高,比较罕见。  所以,这节课,我们就来学习下 Channel。 Channel 的发展 time.geekbang.org/column/article/304188 1/26 2020/11/15 13 | Channel:另辟蹊径,解决并发问题 要想了解 Channel 这种 Go 编程语言中的特有的数据结构,我们要追溯到 CSP 模型,学 习一下它的历史,以及它对 Go 创始人设计 Channel 类型的影响。 CSP 是 Communicating Sequential Process 的简称,中文直译为通信顺序进程,或者叫 做交换信息的循序进程,是用来描述并发系统中进行交互的一种模式。 CSP 最早出现于计算机科学家 Tony Hoare 在 1978 年发表的论文中(你可能不熟悉 Tony Hoare 这个名字,但是你一定很熟悉排序算法中的 Quicksort 算法,他就是 Quicksort 算法的作者,图灵奖的获得者)。最初,论文中提出的 CSP 版本在本质上不是 一种进程演算,而是一种并发编程语言,但之后又经过了一系列的改进,最终发展并精炼 出 CSP 的理论。CSP 允许使用进程组件来描述系统,它们独立运行,并且只通过消息传递 的方式通信。 就像 Go 的创始人之一 Rob Pike 所说的:“每一个计算机程序员都应该读一读 Tony Hoare 1978 年的关于 CSP 的论文。”他和 Ken Thompson 在设计 Go 语言的时候也深 受此论文的影响,并将 CSP 理论真正应用于语言本身(Russ Cox 专门写了一篇文章记录 这个历史),通过引入 Channel 这个新的类型,来实现 CSP 的思想。 Channel 类型是 Go 语言内置的类型,你无需引入某个包,就能使用它。虽然 Go 也提供 了传统的并发原语,但是它们都是通过库的方式提供的,你必须要引入 sync 包或者 atomic 包才能使用它们,而 Channel 就不一样了,它是内置类型,使用起来非常方便。 Channel 和 Go 的另一个独特的特性 goroutine 一起为并发编程提供了优雅的、便利的、 与传统并发控制不同的方案,并演化出很多并发模式。接下来,我们就来看一看 Channel 的应用场景。 Channel 的应用场景 首先,我想先带你看一条 Go 语言中流传很广的谚语: Don’t communicate by sharing memory, share memory by communicating. Go Proverbs by Rob Pike time.geekbang.org/column/article/304188 2/26 2020/11/15 13 | Channel:另辟蹊径,解决并发问题 这是 Rob Pike 在 2015 年的一