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

من موسوعة حسوب
< Ruby
مراجعة 05:55، 20 نوفمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يمكن استخدام الصنف 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?‎

يتحقق إن كان هذا القفل مُطبَّق حاليًا من قبل خيط (thread) ما.

owned?‎

يتحقق إن كان هذا القفل (lock) مُطبَّق حاليًا من قبل الخيط (thread) الحالي.

sleep

يحرر القفل (lock)، وينام لعدد محدَّد من الثواني. 

synchronize

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

try_lock

يحاول الحصول على القفل (lock) والعودة مباشرةً، إذ يعيد القيمة true إن كان القفل مؤمنًا (granted).

unlock

يحرر القفل (lock).

مصادر