الفرق بين المراجعتين ل"Ruby/ConditionVariable/wait"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:  التابع <code>wait</code> الخاص بالصنف <code>ConditionVariable</code> في روبي}}</noinclude> تصنيف: Ruby ...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby ConditionVarialbe]]
 
[[تصنيف: Ruby ConditionVarialbe]]
ينشئ التابع ‎<code>new</code> نسخة جديدة من الصنف <code>ConditionVarialbe</code>.  
+
يحرر التابع ‎<code>wait</code> القفل الممسوك (held) في الكائن <code>mutex</code>  وينتظر، ثم يستعيد (reacquires)  القفل عند الإستيقاظ.
 +
 
 +
في حال تمرير الوسيط<code>timeout</code> (أنظر فقرة البنية العامة)، فسيُعيد (returns) هذا التابع بعد مرور <code>timeout</code> ثانية، حتى في حال عدم الإشارة (signal) من مهمة فرعية أخرى (thread).  
  
 
== البنية العامة ==
 
== البنية العامة ==
 
<syntaxhighlight lang="ruby">
 
<syntaxhighlight lang="ruby">
new()
+
wait(mutex, timeout=nil)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== القيمة المٌعادة ==
+
== المعاملات ==
يعيد التابع ‎<code>new</code> نسخة جديدة من الصنف <code>ConditionVarialbe</code>.
 
  
== أمثلة ==
+
=== <code>mutex</code> ===
أمثلة عن استخدام التابع ‎<code>new</code>:<syntaxhighlight lang="ruby">
+
كائن من النوع <code>[[Ruby/Mutex|Mutex]]</code> .
mutex = Mutex.new  # => ConditionVarialbe سيعيد كائنا من الصنف
+
 
</syntaxhighlight>
+
=== <code>timeout</code> ===
 +
يمثل عدد الثواني التي يجب أن ينتظرها التابع قبل الإعادة، قيمته الإفتراضية <code>nil</code>.
  
 
== أنظر أيضًا ==
 
== أنظر أيضًا ==
 
* صفحة الصنف <code>[[Ruby/ConditionVariable|ConditionVariable]]</code>.
 
* صفحة الصنف <code>[[Ruby/ConditionVariable|ConditionVariable]]</code>.
 +
 +
* التابع <code>[[Ruby/ConditionVariable/signal|signal]]</code>: يوقظ التابع ‎<code>signal</code> أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. 
 +
 +
* التابع <code>[[Ruby/ConditionVariable/broadcast|broadcast]]</code>: يوقظ التابع ‎<code>broadcast</code> جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. 
  
 
== مصادر ==
 
== مصادر ==
* [http://ruby-doc.org/core-2.5.1/ConditionVariable.html#method-c-new قسم التابع new‎ في الصنف ConditionVariable في توثيق روبي الرسمي.]
+
* [http://ruby-doc.org/core-2.5.1/ConditionVariable.html#method-i-wait قسم التابع wait‎ في الصنف ConditionVariable في توثيق روبي الرسمي.]

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

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

في حال تمرير الوسيطtimeout (أنظر فقرة البنية العامة)، فسيُعيد (returns) هذا التابع بعد مرور timeout ثانية، حتى في حال عدم الإشارة (signal) من مهمة فرعية أخرى (thread).

البنية العامة

wait(mutex, timeout=nil)

المعاملات

mutex

كائن من النوع Mutex .

timeout

يمثل عدد الثواني التي يجب أن ينتظرها التابع قبل الإعادة، قيمته الإفتراضية nil.

أنظر أيضًا

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

مصادر