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

من موسوعة حسوب

ترفع كائنات الصنفِ ConditionVariable الصنفَ Mutex. فباستخدام المتغيرات الشرطية، من الممكن إيقاف مهمة حرجة (critical section) في أثناء تنفيذها إلى حين إتاحة مورد ما.

إليك الأمثلة التالية:

mutex = Mutex.new
resource = ConditionVariable.new

a = Thread.new {
   mutex.synchronize {
     # Thread 'a' now needs the resource
     resource.wait(mutex)
     # 'a' can now have the resource
   }
}

b = Thread.new {
   mutex.synchronize {
     # Thread 'b' has finished using the resource
     resource.signal
   }
}

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

التابع new

ينشئ التابع ‎new نسخة جديدة من الصنف ConditionVarialbe.

توابع الكائن العامة (Public Instance Methods)

التابع broadcast

يوقظ التابع ‎broadcast جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن.

التابع signal 

يوقظ التابع ‎signal أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن.

التابع wait

يحرر التابع ‎wait القفل الممسوك في الكائن mutex  ثم ينتظر، ثم يستعيد (reacquires) القفل عند الإستيقاظ. 

مصادر