mutex --- mutex module

โมดูล mutex มีพรีมิทีฟ mutual-exclusion สำหรับปกป้องส่วนวิกฤตของโค้ดหรือข้อมูลที่ใช้ร่วมกันจากการเข้าถึงพร้อมกันโดย interrupt service routine และเธรดหลัก

การได้รับและปล่อย lock ดำเนินการผ่าน context manager (คำสั่ง with) ซึ่งบล็อกจนกว่า mutex จะพร้อมใช้งาน มีเมธอด 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 -- mutex object

class mutex.Mutex

สร้างออบเจ็กต์ mutex ที่ไม่ถูกล็อก

release() None

ปลดล็อก mutex เกิด mutex.MutexException ถ้า mutex ไม่ได้ถูกล็อกอยู่

test() bool

พยายามได้รับ mutex แบบไม่บล็อก คืน True เมื่อสำเร็จและ False ถ้า mutex ถูกล็อกอยู่แล้ว

หากต้องการได้รับ mutex แบบบล็อก ให้ใช้ instance เป็น context manager (คำสั่ง with) mutex จะถูกปล่อยโดยอัตโนมัติเมื่อออก

ข้อยกเว้น

exception mutex.MutexException

Subclass ของ OSError เกิดขึ้นโดย Mutex.release เมื่อ mutex ถูกปลดล็อกอยู่แล้ว