在 Go (Golang) 中使用并发
了解使用 Go 编程语言进行并发编程的优缺点
讲师:Trevor Sawler
双语IT资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
要求
-
对 Go 编程语言有深入的理解
-
连接到互联网的 Windows、Macintosh 或 Linux 计算机
描述
Go,通常简称为 Golang,以其极其便捷的并发处理而闻名。为了使某个函数并发运行,我们只需在函数调用前添加“go”即可,它就会以 GoRoutine 的形式在后台高效运行。Go 内置的调度程序负责确保给定的 GoRoutine 在合适的时间运行,并尽可能高效地运行。
然而,这并不意味着在 Go 中处理并发很简单——线程安全编程需要仔细规划,最重要的是,它要求开发人员对 Go 如何处理并发有绝对扎实的理解。
在标准库中,Go 为我们提供了几种处理程序并发运行部分的方法,就在标准库中: sync.WaitGroup,它允许我们等待任务完成;sync.Mutex,它允许我们锁定和解锁资源,这样任何两个 GoRoutine 都不能同时访问相同的内存位置;最后,Channels,它允许 GoRoutines 相互发送和接收数据。
Go 的并发处理方法相当简单,大致可以概括为一句箴言: 不要通过共享内存进行通信,而要通过通信来共享内存。我们通常通过通道来实现通过通信共享内存。
在本课程中,我们将详细介绍 WaitGroup、Mutex 和 Channel 的使用。我们还将讨论并发中固有的一些问题,包括程序提前终止和竞争条件。首先,我们将通过解决计算机科学领域的一些经典问题来深入了解这些问题的工作原理,例如“哲学家就餐问题”、“生产者/消费者问题”和“理发师沉睡问题”。这些问题之所以成为经典,是因为它们迫使开发人员找到处理并发或并行运行代码的最佳方法。
最后,我们将以一个更“现实”的问题来结束本课程。我们需要为客户注册某种订阅服务,并处理开票、注册以及启动新客户所需的所有事项。我们将尽可能快地完成这些任务,方法是将必要的任务拆分成更小的任务,并让它们同时运行。
请注意,本课程要求您从 Docker 下载 Docker Desktop。如果您是 Udemy Business 用户,请在下载软件前咨询您的雇主。
本课程适合哪些人:
- 想要了解 Go 如何与并发编程协同工作的 Go 程序员
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。