mutexモジュールはロックの獲得と解除を通して排他制御を 可能にするクラスを定義します。 スレッドやマルチタスクを必要と(あるいは意味)しませんが、 それらの目的に有益となることでしょう。
mutexモジュールは以下のクラスを定義します:
) |
mutexは状態を2つ持ちます -- ``ロック''ビットとキューです。
mutexがロックされていないとき、キューは空です。
mutexがロックされているとき、キューは空、
あるいはロックを獲得するために待っている関数(またはメソッド)
を示すペア(function, argument)
を収容しています。
キューが空でないときにmutexが解除されると、
最初のキュー登録が削除されてそのfunction(argument)
が
呼び出れ、それが今はロックを持ちます。
もちろんマルチスレッドの意味は全くなく、 一度ロックを取得すると関数が呼ばれるので、 lock()による風変わりなインターフェースとなりえます。