- ゴルーチンの関係を調整しようとしている、あるいは一連のゴルーチンによって変換されるデータをトラックしているのならばチャネルを使うべきである
- 構造体のフィールドに対するアクセスを共有しているのならば
mutexを使うべきである - チャネルを使う際に致命的なパフォーマンスの問題があり、この問題を修正する方法が見つからないのならば
mutexを使うようにコードを修正すべきである - Goの
mutexはリエントラントではない- 一つのゴルーチンが同じロックを二度取得しようとすると、デッドロックになる
- Javaはリエントラントの特性を持っている