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 ถูกปลดล็อกอยู่แล้ว