[心得] Go 语言实战 Limit Concurrency 方法

楼主: appleboy46 (小恶魔)   2020-10-01 20:13:54
英文 Blog: https://bit.ly/3il6rtu
中文 Blog: https://bit.ly/2GnQl5d
程式码范例: https://bit.ly/2SgFrAU
最近看到一篇文章讨论的非常热烈,就是‘concurrency is still not easy’这篇文章
甚至上了 Hack News,大家有兴趣可以点进去看看,而本篇会用一个实际案例介绍为什么
作者会说写 Concurrency 不是这么容易。大家都知道在 Go 语言内,要写 Concurrency
只要透过一个关键字 go 就可以轻易写出,而多个 Goroutine 要沟通就是需要透过
Channel 方式,而网络上有一堆 Concurrency Pattern 提供给各位开发者,但是官方
Go 的标准库内并没有包含这些 Pattern,所以实作之后,说实在很难看出问题。文章内
提到 gops 实作 Limit Concurrency 遇到系统整个 hang 住的问题?什么是 Limit
Concurrency,就是当系统有多个工作需要同时执行,但是需要限制 Concurrency 数量,
避免整个资源都被吃光。底下来介绍文章内遇到的问题。
00:00 文章介绍 (concurrency is still not easy)
00:56 什么是 gops 工具
02:24 gops 遇到 concurrency 问题
04:36 实际看程式码介绍问题
08:19 第一种解答发生什么问题
11:37 第二种解答修正 concurrency 问题
16:15 验证答案是否正确
Youtube 影片: https://www.youtube.com/watch?v=jA7aYSRKVTQ
作者: johnny94 (32767)   2020-10-01 20:44:00
其实就是 go 建立 thread 太简单了才会有concurrency 很容易的错觉…
作者: lturtsamuel (港都都教授)   2020-10-01 21:10:00
go的并发就是语法糖写起来很爽 其实没有从本质性帮你避免那些多线程会遇到的问题
作者: yuanyu90221 (菜菜鸟)   2020-10-13 01:25:00

Links booklink

Contact Us: admin [ a t ] ucptt.com