صفحة الصنف Mutex
في روبي
< Ruby
يمكن استخدام كائنات 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) الحالية.