質問: make([]bool,10) ``` 上のbooleanのスライスを二つのgoroutineがシェアしているとします。ただ、片方のgoroutineは、スライスの最初の5つのインデックスへ書き込みするのみで、もう片方のgoroutineは、スライスの後半の5つのインデックスを読み込むだけのものです。この場合でも、Race Conditionは起こり得るのでしょうか? 複数のgoroutineが同じメモリの値を読み書きしたりすると、予期せぬ結果が起こることがある。というのがRace Conditionだという認識です。お互い読み書きする範囲は被っていないので(読み込むだけのgoroutineもありますし)、Race Conditionは起こらないような気がするのですが、一つの変数をシェアしているので、影響があるような気もしてしまいます。。 よろしくお願い致します。
回答: * 複数のgoroutineからリードだけ * 複数のgoroutineにまたがない要素の書き換え であればraceコンディションが起こらないのはそのように書いた実装を`go run -race .`で見てもらうと確認できるかと思います。 * 複数のgoroutineに同じインデックス要素の書き換えを行うことがある場合 * 一方のgoroutineがスライスのcapやlenが変更される際に他方のgoroutineがそのスライスにアクセスした場合 はraceコンディションが起こります。