PTT推薦

[心得] Go 語言實戰 Limit Concurrency 方法

看板Soft_Job標題[心得] Go 語言實戰 Limit Concurrency 方法作者
appleboy46
(小惡魔)
時間推噓 2 推:2 噓:0 →:3

英文 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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.55.179 (臺灣)
PTT 網址

johnny9410/01 20:44其實就是 go 建立 thread 太簡單了才會有concurrency 很

johnny9410/01 20:44容易的錯覺…

lturtsamuel10/01 21:10go的併發就是語法糖寫起來很爽 其實沒有從本質性幫你

lturtsamuel10/01 21:10避免那些多線程會遇到的問題

yuanyu9022110/13 01:25