第40章へようこそ。
今日のテーマは「Mutex」です。
前章で、Arcが共有された読み取りのアクセスを与えることを見ました。
複数のスレッドが1つの値を共通の所有者として持ち、それぞれが読める。
ただし、Arcが解決するのは「誰がその値を所有するか」までで、「いつその値を書き換えてよいか」は別の問題でした。
複数のスレッドが同じ値を同時に書き換えれば、書き込みが互いに干渉し、データ競合が起こる。
Mutexは、この「いつ書き換えてよいか」を解く仕組みです。
1つの値に対して、一度に1つのスレッドだけが触れることを保証する。
触れている流れがいる間、ほかの流れは待つ。
この「一度に1つだけ」という保証を、排他アクセスと呼びます。
今日扱うのは、Mutexが排他アクセスをどう保証するのか、それを支えるガードの仕組み、
そしてArcと組み合わせて複数のスレッドで可変な値を共有する形です。