الفرق بين المراجعتين لصفحة: «Ruby/ConditionVariable»

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
سطر 26: سطر 26:


==توابع الصنف العامة (Public Class Methods)==
==توابع الصنف العامة (Public Class Methods)==
===[[Ruby/Complex/polar|التابع <code>polar</code>]]===
===[[Ruby/ConditionVariable/new|التابع <code>new</code>]]===
ينشئ التابع ‎<code>new</code> نسخة جديدة من الصنف <code>ConditionVarialbe</code>.


===[[Ruby/Complex/rect|التابع <code>rect</code>]]===
== توابع الكائن العامة (Public Instance Methods) ==


===[[Ruby/Complex/rectangular|التابع <code>rectangular </code>]]===
===[[Ruby/ConditionVariable/broadcast|التابع <code>broadcast</code>]]===
يوقظ التابع ‎<code>broadcast</code> جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن.
 
===[[Ruby/ConditionVariable/signal|التابع <code>signal </code>]]===
يوقظ التابع ‎<code>signal</code> أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن.
 
===[[Ruby/ConditionVariable/wait|التابع <code>wait</code>]] ===
يحرر التابع ‎<code>wait</code> القفل الممسوك في الكائن <code>mutex</code>  ثم ينتظر، ثم يستعيد (reacquires)  القفل عند الإستيقاظ. 


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Complex.html قسم  الصنف ConditionVariable في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/ConditionVariable.html قسم  الصنف ConditionVariable في توثيق روبي الرسمي.]

مراجعة 09:20، 15 سبتمبر 2018

ترفع كائنات الصنفِ 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) القفل عند الإستيقاظ. 

مصادر