掌握 Go 多线程编程 (Golang)
Mastering Multithreading Programming with Go (Golang)
通过 Google Go Lang 中实用且有趣的示例了解多线程、并发和并行编程
你将学到什么
-
了解如何创建响应灵敏且高性能的软件。
-
了解如何使用多线程对某些类型的问题和模拟进行建模。
-
使用 Golang 开发高度并发和并行的程序。
-
了解并行计算的优点、限制和属性。
-
通过更高级的多线程主题提高您的 Go 编程技能。
-
了解 goroutine、互斥锁、读写锁、等待组、通道、条件变量等。
要求
-
一些 Go 编程经验(如果您知道如何使用函数、循环、数组和一些指针就足够了)。
-
安装了最新版本的 Go。
-
能够做 50 个俯卧撑,同时在每次重复时喊出一个独特的质数(开个玩笑)。
描述
在一家国际投行的12楼举行的会议上,会议气氛极其阴郁。该公司的开发人员开会讨论在关键核心应用程序失败并导致系统范围中断后的最佳解决方案。
“伙计们,我们这里遇到了一个严重的问题。我发现中断是由我们代码中的竞争条件引起的,该竞争条件是不久前引入的,并于昨晚触发。”高级开发人员马克·亚当斯 (Mark Adams) 说道。
房间里一片寂静。落地窗外的汽车在繁忙的城市交通中缓慢而无声地蠕动。高级开发人员立即了解了情况的严重性,意识到他们现在将全天候工作以解决问题并整理数据存储中的混乱情况。经验不足的开发人员知道竞争条件很严重,但不知道到底是什么原因导致的,因此他们保持沉默。
最终,交付经理 Brian Holmes 打破了沉默,“应用程序已经运行了几个月,没有出现任何问题,我们最近没有发布任何代码,软件怎么可能就崩溃了?!”
每个人都摇摇头,回到自己的办公桌前,留下布莱恩独自留在房间里,一脸困惑。他拿出手机,用谷歌搜索“竞赛条件”。
听起来很熟悉吗?您有多少次听到其他开发人员谈论使用线程和并发编程来解决特定问题,但由于害怕而您没有参与讨论?
这是高级开发人员永远不会分享的小秘密… 多线程编程并不比普通编程难多少。开发人员害怕并发编程,因为他们认为这是一个高级主题,只有经验丰富的开发人员才能使用。
这与事实相去甚远。我们的思维非常习惯于处理并发性。事实上,我们在日常生活中这样做没有任何问题,但不知何故,我们很难将其转化为我们的代码。原因之一是我们不熟悉可用于管理这种并发的概念和工具。本课程旨在帮助您了解如何使用多线程工具和概念来管理并行编程。它的设计尽可能实用。我们从一些有关并行性的理论开始,然后解释操作系统如何处理多个进程和线程。稍后我们将通过使用多线程解决示例问题来解释可用的多种工具。
在本课程中,我们使用 Google 的 Go 编程语言及其 goroutine,但是这里学到的概念可以应用于大多数编程语言。
本课程的所有代码都可以在github上找到,用户名/项目: cutajarj/multithreadingo
本课程适合谁:
- 希望通过提高技能和学习并发多线程编程来将自己的职业生涯提升到一个新水平的开发人员。
- 目前正在学习并行计算的大学生希望了解课堂上学到的概念如何与实践相关。
- 最近开始使用 Go 并希望发现可用的多线程工具的经验丰富的开发人员。
- 交付经理打电话给布莱恩·霍姆斯。
评论(0)