mutex --- وحدة mutex

توفّر وحدة mutex بدائية إقصاء متبادل لحماية الأقسام الحرجة من الشيفرة أو البيانات المشتركة من الوصول المتزامن من قِبل روتين خدمة المقاطعة والخيط الرئيسي.

يُجرى اكتساب القفل وتحريره عبر مدير سياق (عبارة 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

class mutex.Mutex

ينشئ كائن mutex غير مقفل.

release() None

يفتح قفل الـ mutex. يُطلق mutex.MutexException إذا لم يكن الـ mutex مقفلًا حاليًا.

test() bool

يحاول اكتساب الـ mutex بطريقة غير حاجبة. يُرجع True عند النجاح و False إذا كان الـ mutex مقفلًا بالفعل.

لاكتساب الـ mutex بطريقة حاجبة، استخدم النسخة كمدير سياق (عبارة with). يُحرَّر الـ mutex تلقائيًا عند الخروج.

الاستثناءات

exception mutex.MutexException

فئة فرعية من OSError. تُطلَق بواسطة Mutex.release عندما يكون الـ mutex غير مقفل بالفعل.