看板 Soft_Job 關於我們 聯絡資訊
英文 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://www.ptt.cc/bbs/Soft_Job/M.1601554440.A.A74.html
johnny94: 其實就是 go 建立 thread 太簡單了才會有concurrency 很 10/01 20:44
johnny94: 容易的錯覺… 10/01 20:44
lturtsamuel: go的併發就是語法糖寫起來很爽 其實沒有從本質性幫你 10/01 21:10
lturtsamuel: 避免那些多線程會遇到的問題 10/01 21:10
yuanyu90221: 推 10/13 01:25