Listen

Description

第40章へようこそ。

今日のテーマは「Mutex」です。

前章で、Arcが共有された読み取りのアクセスを与えることを見ました。

複数のスレッドが1つの値を共通の所有者として持ち、それぞれが読める。

ただし、Arcが解決するのは「誰がその値を所有するか」までで、「いつその値を書き換えてよいか」は別の問題でした。

複数のスレッドが同じ値を同時に書き換えれば、書き込みが互いに干渉し、データ競合が起こる。

Mutexは、この「いつ書き換えてよいか」を解く仕組みです。

1つの値に対して、一度に1つのスレッドだけが触れることを保証する。

触れている流れがいる間、ほかの流れは待つ。

この「一度に1つだけ」という保証を、排他アクセスと呼びます。

今日扱うのは、Mutexが排他アクセスをどう保証するのか、それを支えるガードの仕組み、

そしてArcと組み合わせて複数のスレッドで可変な値を共有する形です。