mutex --- mutex モジュール

mutex モジュールは、コードのクリティカルセクションや共有データを、割り込みサービスルーチンとメインスレッドによる同時アクセスから保護するための相互排他プリミティブを提供します。

ロックの取得と解放は、ミューテックスが利用可能になるまでブロックするコンテキストマネージャー(with 文)を介して実行されます。非ブロッキングの Mutex.test() メソッドも提供されています。

例:

from mutex import Mutex

mtx = Mutex()

# Acquire for a critical section (blocks if already held).
with mtx:
    # ... protected code, e.g. shared buffer access ...
    pass

# Or try without blocking.
if mtx.test():
    try:
        # ... protected code ...
        pass
    finally:
        mtx.release()

class Mutex -- ミューテックスオブジェクト

class mutex.Mutex

ロックされていないミューテックスオブジェクトを作成します。

release() None

ミューテックスのロックを解除します。ミューテックスが現在ロックされていない場合は mutex.MutexException を発生させます。

test() bool

非ブロッキング方式でミューテックスの取得を試みます。成功した場合は True を、ミューテックスがすでにロックされている場合は False を返します。

ブロッキング方式でミューテックスを取得するには、インスタンスをコンテキストマネージャー(with 文)として使用します。ミューテックスは終了時に自動的に解放されます。

例外

exception mutex.MutexException

OSError のサブクラスです。ミューテックスがすでにロック解除されている場合に Mutex.release によって発生します。