実践Go並行プログラミング
※この文を削除し、代わりに何らかの「一覧ページでの見出し用の文章」を記入お願いします。また、文内にリンクは置けますが、画像・数式・埋め込みなどのテキスト以外の要素を貼ることはできません
ここからが本文になります。↑の区切り線が見出し文との区切りになります。※この行は削除してください
goroutine 間通信
他の goroutine に何か情報を伝えたい時、channel を介するのが一般的です。ただしこれにはいくつかのパターンがあります。
- 1回だけ伝えたい、タイミングだけ伝えたい、相手は1つ
- 1回だけ伝えたい、タイミングだけ伝えたい、ブロードキャストしたい
- close(ch)
- 受け側では1つの ch を共有する
- 1回だけ伝えたい、データも渡したい、相手は1つ
- 1回だけ伝えたい、データも渡したい、ブロードキャストしたい
- 何度も伝えたい、タイミングだけ伝えたい、相手は1つ
- 何度も伝えたい、タイミングだけ伝えたい、ブロードキャストしたい
- 一見ループを使いたくなるが、sync パッケージの何かで出来るのでは。
- 何度も伝えたい、データも渡したい、相手は1つ
- 何度も伝えたい、データも渡したい、ブロードキャストしたい
- // 注: ch はブロックしないように buffered channel にする
// これ他のブロードキャストとは違って ch は1つにできない
for _, ch := range channels {
ch <- data
}
- これも sync パッケージで共有的な何かが使えるのでは?
ここから下はそのまま使ってください(アレンジしていただいても良いです!)※この行は削除してください
We're Hiring!
📢
Mobility Technologies ではともに働くエンジニアを募集しています。
興味のある方は 採用ページ も見ていただけると嬉しいです。
Twitter @mot_techtalk のフォローもよろしくお願いします!