Go 中的并发性 (Golang)

Concurrency in Go (Golang)

了解 Go 中并发的原因和方式。

您将会学到

  • 如何旋转 Goroutines 并在它们之间传递数据。
  • 如何避免 Race Conditions 和 Deadlocks。
  • 如何同步 Goroutine 的执行。
  • Go Scheduler 的工作原理。
  • 如何使用 Goroutines 和 Channel 构建流水线。
  • 如何跨 API 边界传播数据。

要求

  • Go 编程语言的基本知识,如循环、函数、方法。
  • 在笔记本电脑上安装 Go 编译器和任何 IDE。

描述

所有开发人员都面临的问题是,他们是否有效地利用了可用的计算资源?

课程概述

本课程可分为五个部分。

  • 并发基元

  • 深入了解并发基元

  • 并发模式

  • 上下文包

  • Bonus 部分 – 接口

在本课程中,我们尝试回答这些问题。

并发基元

  • 线程有哪些限制?

  • goroutines 相对于 OS 线程有什么优势?

  • 我们如何避免竞争条件?

  • 如何使用通道来传输数据?

  • 我们如何实现超时和非阻塞通信?

  • 我们什么时候使用互斥锁和通道?

  • 如何同步 goroutine 的执行?

  • 如何检测 Go 中的竞争条件?

深入研究并发基元

  • Go 调度器是如何工作的?

  • 上下文切换的工作原理是什么?

  • 通道发送和接收是如何工作的?

并发模式

  • 如何使用 Goroutines 和 Channel 构建流水线?

  • 如何 Fan-out 和 Fan-in 计算密集型阶段?

  • 我们如何避免 Goroutine 泄漏?

上下文包

  • 我们如何跨 API 边界传播请求范围的数据和取消信号?

编码练习

  • 每个概念之后都有一个编码练习。

  • 练习蓝图在 Github 上共享。

示例应用程序

我们将构建

  • 网络爬虫的蓝图。

  • 图像处理管道。

  • 使用上下文包的 HTTP 服务器超时。

Bonus 部分 – 接口

  • 如何将不同对象之间的共同行为定义为抽象类型?

  • Interface 如何为更高级别的函数提供抽象?

此课程面向哪些人:

  • 寻找从基础到高级的 Go 编程概念的学生
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。