Working with Concurrency in Go (Golang)

了解使用 Go 编程语言进行并发编程的优缺点。

你将会学到的

  • 了解 Go 使并发编程工作变得简单的各种方法
  • 了解并发是如何工作的,以及它的优点和缺陷
  • 了解 WaitGroup、互斥体和通道如何工作
  • 通过处理经典计算机科学问题和构建真实示例来掌握并发性

要求

  • 对 Go 编程语言有很好的理解
  • 连接到 Internet 的 Windows、Macintosh 或 Linux 计算机

说明

Go,通常被称为 Golang,以使并发工作变得非常容易而闻名。为了让一个特定的函数同时运行,我们所要做的就是在函数调用前面加上“go”这个词,它会像 GoRoutine 一样在后台愉快地运行。Go 的内置调度程序确保给定的 GoRoutine 在它应该运行的时候运行,并且尽可能高效。

然而,这并不意味着在 Go 中处理并发很简单——线程安全编程需要仔细规划,最重要的是它要求开发人员对 Go 如何处理并发有绝对扎实的理解。

在标准库中,Go 为我们提供了几种处理程序并发运行部分的方法,就在标准库中:  sync.WaitGroup,它让我们等待任务完成;sync.Mutex,它允许我们锁定和解锁资源,这样没有两个 GoRoutine 可以同时访问同一个内存位置;最后是Channels,它允许 GoRoutine 相互发送和接收数据。

Go 的并发方法相当简单,或多或少地概括了这句口头禅: 不要通过共享内存进行通信;相反,通过通信共享内存。通道是我们通常通过通信共享内存的方式。

在本课程中,我们将介绍 WaitGroups、Mutexes 和 Channels 的使用,并且我们将详细介绍。我们还将介绍并发中固有的一些问题,包括程序提前终止和竞争条件。最初,我们将通过解决计算机科学领域中发现的一些经典问题来很好地理解这些事情是如何工作的,包括哲学家进餐问题、生产者/消费者问题和睡觉的理发师问题。这些问题之所以成为经典是有原因的:它们迫使开发人员找出处理并发或并行运行代码的最佳方法。

最后,我们将以一个更“现实”的问题结束课程,我们必须为客户注册某种订阅服务,并处理发票、注册以及获得新服务所需的所有事情客户启动并运行。当然,我们会尽快将必要的任务分成更小的任务,并让它们同时运行。

此课程面向哪些人:

  • 想要了解 Go 如何与并发编程一起工作的 Go 程序员
声明:本站所有资源、素材等全部来源于互联网,赞助VIP仅用于对IT资源服务器带宽等费用支出做支持,从本站下载资源,说明你已同意本条款。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
TheItzy » Working with Concurrency in Go (Golang)