iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
自我挑戰組

golang 後端菜雞工程師學習雜記系列 第 14

Day 14 讀 Go Concurrency Patterns - Rob Pike I

  • 分享至 

  • xImage
  •  

本篇是看 Go Concurrency Patterns 的心得

Yes
簡報網址:https://talks.golang.org/2012/concurrency.slide

在影片的前段,在稍微提到了 concurrency 和 parallism ,這裡大部分的內容和 Concurrency is not Parallelism 有重疊的部分,Day6 到 Day10 也寫過這篇演講的內容,這篇我就不多提

以下我會從投影片裏的 Pattern 開始

Generator pattern

Rob Pike 在這提到,這裡的 Pattern 和 OOP 的 Pattern 不一樣,這裡只是,只是想給出一些 concurrency 的例子
在 function 內部回傳一個 receive-only channel,從外部看來就是提供一個 generator

這時就能把這個 function 當成一個服務一樣,可以提供給多個人,但這個程式會有一些問題,Joe 和 Ann 一定會是 Joe 先印出來然後再換 Ann,這就不符合預期:要是 Ann 可能已經 ready 好要接收值了,但是他還是一定要等 Joe ready 好了才能輪到他。

Joe 0
Ann 0
Joe 1
Ann 1
Joe 2
Ann 2
Joe 3
Ann 3
Joe 4
Ann 4

Fan in pattern

我們可以寫一個 Fan in function 或是稱它為 Multiplexer。誰先的 channel 先 ready 了,就先印,這就解決剛剛的問題了。

來個示意圖

到下一頁講解時我就卡住了,看了一下子沒看懂,今天就先這樣吧


上一篇
Day 13 複習 golang concurrency 語法篇 II
下一篇
Day 15 讀 Go Concurrency Patterns - Rob Pike II
系列文
golang 後端菜雞工程師學習雜記18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言