概要
たまに iota の使い方ごと忘れたりするので、ついでにここにメモメモ。。。
頻繁に使うわけではないですが、知っていると便利なやり方の一つだと思います。
サンプルの中でやっている処理に意味はないですが、ついでなので Producer/Consumer パターンでビットフラグを使って完了判定してる処理にしています。ついでに状態が変化するたびに通知してそれをレポートする処理も入れています。
Go (Golang) Producer, Consumer, Goroutine, BitFla…
実行すると以下のような感じです。
dev@906b0c3759e0:/workspace$ go version go version go1.18beta1 linux/arm64 dev@906b0c3759e0:/workspace$ go build dev@906b0c3759e0:/workspace$ ./app c-1: 0 c-2: 1 c-2: 2 c-1: 3 c-2: 4 c-2: 5 c-1: 6 c-2: 7 c-1: 8 c-2: 9 c-1: 10 c-2: 11 c-1: 12 c-1: 13 c-1: 14 Producer:DONE Completer:RUNNING Consumer1:RUNNING Consumer2: RUNNING Producer:DONE Completer:DONE Consumer1:RUNNING Consumer2: RUNNING c-2: 15 c-1: 16 c-2: 17 c-1: 18 c-1: 19 c-2: 20 c-1: 21 c-2: 22 c-2: 23 c-2: 24 c-2: 25 c-1: 26 c-2: 27 c-1: 28 c-2: 29 Producer:DONE Completer:DONE Consumer1:RUNNING Consumer2: DONE Producer:DONE Completer:DONE Consumer1:DONE Consumer2: DONE
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場