الصنف 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

ينشئ نسخة جديدة من الصنف ConditionVarialbe.

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

broadcast

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

signal

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

wait

يحرِّر القفل المطبَّق على الكائن mutex ثم ينتظر، ثم يستعيد (reacquires) القفل عند الإستيقاظ.

مصادر