いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-168 (ビットフラグ)

概要

たまに 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

過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com