Go で状態を管理するための最も重要な仕組みは、
チャネルを使った通信です。これについては、
ワーカープール の例で見ました。
しかし、状態を管理する方法は他にもいくつかあります。
ここでは、複数のゴルーチンからアクセスされる
アトミックカウンター (atomic counters) のための、
|
|
|
|
|
|
|
|
正数カウンターのために、アトミックな整数型を使います。 |
|
WaitGroup は、すべてのゴルーチンがタスクを完了するのを 待つときに使えます。 |
|
カウンターをちょうど 1000 回インクリメントするゴルーチンを 50 個開始します。 |
|
|
|
カウンターをアトミックにインクリメントするため、
|
|
|
|
すべてのゴルーチンが完了するまで待ちます。 |
|
書き込み中のゴルーチンがないことを知っているので、
|
|
ちょうど 50,000 オペレーションになるはずです。仮にアトミックでない
整数を使って |
|
次は、状態を管理するもう 1 つの方法である、 ミューテックスを見ていきましょう。 |
Next example: Mutexes.