作者appleboy46 (小恶魔)
看板Soft_Job
标题[心得] Go 语言管理 Concurrency 的三种方式
时间Wed Aug 12 09:32:27 2020
部落格版:
https://bit.ly/three-goroutine
教学影片:
https://www.youtube.com/watch?v=TEfp-bTAr-c
程式范例:
https://bit.ly/3aeD9KX
00:00 三种控制方式
00:56 什麽时候使用 WaitGroup
03:40 Channel 使用时机
06:30 使用 Context 解决无法预知的 Goroutine 数量
09:26 技术总结 (部落格中文介绍)
相信大家踏入 Go 语言的世界,肯定是被强大的 Concurrency 所吸引,Go 语言用最简单
的关键字 go 就可以将任务丢到背景处理,但是怎麽有效率的控制 Concurrency,这是入
门 Go 语言必学的项目,本篇会介绍三种方式来带大家认识 Concurrency,而这三种方式
分别对应到三个不同的名词:
WaitGroup, Channel, 及 Context。
WaitGroup: 需要将单一个 Job 拆成多个子任务,等到全部完成後,才能进行下一步,这
时候用 WaitGroup 最适合了
Channel+select: Channel 只能用在比较单纯的 Goroutine 状况下,如果要管理多个
Goroutine,建议还是走 context 会比较适合
Context: 如果你想一次控制全部的 Goroutine,相信用 context 会是最适合不过的,这
也是现在 Go 用最凶的地方,当然 context 不只有这特性,详细可以参考『用 10 分钟
了解 Go 语言 context package 使用场景及介绍[1]』
[1]:
https://bit.ly/what-is-context
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 3.0.67.238 (新加坡)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1597195950.A.447.html
1F:推 joekaojoekao: 推 08/12 09:51
2F:推 showken: 推推 08/12 09:58
3F:推 BignoZe: 推 08/12 10:46
4F:推 WaterLengend: 推 08/12 15:25
5F:推 dces4212: push 08/12 16:27
6F:推 garypan1990: 推 08/12 19:43
7F:推 marc47: 推 08/12 23:57
8F:推 uopsdod: 推 08/13 01:40
9F:推 tkueeby: 感谢 08/13 12:58
10F:推 somefatguy: 推 08/13 14:18
11F:推 ltony1024: 推 08/14 20:49
12F:推 marc47: 有时候应用理解一点都不难,画一个简单且实际的例子比讲很 08/15 22:20
13F:→ marc47: 多话更棒 08/15 22:20