صفحة الصنف Mutex في روبي

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

يمكن استخدام كائنات Mutex كواجهة لتنسيق الوصول إلى البيانات المشتركة من عدة مهم فرعية (threads) متزامنة. مثلا:

semaphore = Mutex.new

a = Thread.new {
  semaphore.synchronize {
    # access shared resource
  }
}

b = Thread.new {
  semaphore.synchronize {
    # access shared resource
  }
}

توابع الصنف العامة (Public Class Methods)

التابع new

ينشئ كائنا جديدًا من النوع Mutex

توابع النسخة العامة (Public Instance Methods)

التابع lock

يحاول مسك القفل (grab the lock)، وينتظر إذا لم يكن متاحًا.

التابع locked?‎

يعيد القيمة true إن كان هذا القفل ممسوكًا حاليًا من قبل مهمة فرعية (thread) ما.

التابع owned?‎

يعيد القيمة true إن كان هذا القفل ممسوكًا حاليًا من قبل المهمة الفرعية (thread) الحالية.

التابع sleep

يحرر القفل وينام لمدة timeout ثانية.

التابع synchronize

يحصل على القفل (lock)، وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.

التابع try_lock

يحاول الحصول على القفل (lock) والعودة على الفور.

التابع unlock

يحرر القفل. ويطلق الاستثناء ThreadError إذا لم يتم تأمين mutex من قبل المهمة الفرعية (thread) الحالية.

مصادر