# 6.12 `mutex` -- 排他制御

`mutex`モジュールはロックの獲得と解除を通して排他制御を 可能にするクラスを定義します。 スレッドやマルチタスクを必要と(あるいは意味)しませんが、 それらの目的に有益となることでしょう。

`mutex`モジュールは以下のクラスを定義します:

class `mutex`( | )

  新しい(ロックされてない)mutexを作ります。

  mutexは状態を2つ持ちます -- ``ロック''ビットとキューです。 mutexがロックされていないとき、キューは空です。 mutexがロックされているとき、キューは空、 あるいはロックを獲得するために待っている関数(またはメソッド) を示すペア`(function, argument)`を収容しています。 キューが空でないときにmutexが解除されると、 最初のキュー登録が削除されてその`function(argument)`が 呼び出れ、それが今はロックを持ちます。

  もちろんマルチスレッドの意味は全くなく、 一度ロックを取得すると関数が呼ばれるので、 `lock()`による風変わりなインターフェースとなりえます。