Go言語100Tips No.57

mizue
·

Go言語100Tips ありがちなミスを把握し、実装を最適化する の No.57を読んだ。第8章 並行処理 の続き。

No.57 は、チャネルとミューテックスの使い分けについて。

ミューテックスはその資源への排他的なアクセスを保証する。

チャネルはデータの有無(chan struct()かどうか)に関わらない、伝達のための仕組み。協調や所有権の移転はチャネルを介して実現されるべき。

一般に、並列ゴルーチン間の同期はミューテックスによって達成されるべきで、並行ゴルーチンは、協調しオーケストレーションする必要がある。この連携は通信の範囲にはいるのでチャネルを使うことになる。

@mizue
Healthy Programmer