[心得] Go 語言管理 Concurrency 的三種方式

作者: appleboy46 (小惡魔)   2020-08-12 09:32:27
部落格版: 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
作者: joekaojoekao (bingroom)   2020-08-12 09:51:00
作者: showken (梟仔)   2020-08-12 09:58:00
推推
作者: BignoZe (BignoZe)   2020-08-12 10:46:00
作者: WaterLengend (Leeeeeeeeooooooo)   2020-08-12 15:25:00
作者: dces4212 (flawless)   2020-08-12 16:27:00
push
作者: garypan1990 (> ~ <)y)   2020-08-12 19:43:00
作者: marc47 (思樂冰)   2020-08-12 23:57:00
作者: uopsdod (pcman)   2020-08-13 01:40:00
作者: tkueeby   2020-08-13 12:58:00
感謝
作者: somefatguy   2020-08-13 14:18:00
作者: ltony1024 (LT)   2020-08-14 20:49:00
作者: marc47 (思樂冰)   2020-08-15 22:20:00
有時候應用理解一點都不難,畫一個簡單且實際的例子比講很多話更棒

Links booklink

Contact Us: admin [ a t ] ucptt.com