作者appleboy46 (小惡魔)
看板Soft_Job
標題[心得] Go 語言實戰 Limit Concurrency 方法
時間Thu Oct 1 20:13:54 2020
英文 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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.55.179 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1601554440.A.A74.html
1F:→ johnny94: 其實就是 go 建立 thread 太簡單了才會有concurrency 很 10/01 20:44
2F:→ johnny94: 容易的錯覺… 10/01 20:44
3F:推 lturtsamuel: go的併發就是語法糖寫起來很爽 其實沒有從本質性幫你 10/01 21:10
4F:→ lturtsamuel: 避免那些多線程會遇到的問題 10/01 21:10
5F:推 yuanyu90221: 推 10/13 01:25