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

من موسوعة حسوب
< Ruby‏ | Mutex
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>sleep‎</code> الخاص بالصنف <code>Mutex</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>sleep‎</code> الخاص بالصنف <code>Mutex</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Mutex.sleep‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Mutex]]
[[تصنيف: Ruby Mutex]]
يحرر التابع <code>sleep</code> القفل وينام لمدة <code>timeout</code> ثانية إذا تم تمريره وكانت قيمته تخالف nil أو forever. يطلق الخطأ <code>ThreadError</code> إذا لم يتم تأمين <code>mutex</code> من قبل المهمة الفرعية (thread) الحالي.
يحرر التابع <code>sleep</code> القفل (lock)، وينام لعدد محدَّد من الثواني. يطلق الخطأ <code>[[Ruby/ThreadError|ThreadError]]</code> إذا لم يكن الكائن <code>mutex</code> مُقفلًا من قِبَل الخيط (thread) الحالي.
عندما تستأنف المهمة الفرعية، سيحاول استعادة القفل (reacquire the lock).
 
لاحظ أنه يمكن تنبيه (wakeup ) هذا التابع دون استدعاء <code>Thread#wakeup</code> بشكل صريح. على سبيل المثال، عند تلقي إشارة.
عندما يستأنف الخيط عمله، ستحاول تلك المهمة استعادة القفل وتطبيقه.
 
لاحظ أن هذا التابع يمكنه إيقاظ (wakeup) الخيط دون استدعاء <code>[[Ruby/Thread/wakeup|Thread.wakeup]]</code> بشكل صريح كما يحدث، على سبيل المثال، عند تلقي إشارة.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">sleep(timeout = nil) → number‎</syntaxhighlight>
<syntaxhighlight lang="ruby">sleep(timeout = nil) → number‎</syntaxhighlight>
==المعاملات==
==المعاملات==
===<code>timeout ‎</code>===
===<code>timeout‎</code>===
 


==القيمة المُعادة==
عدد الثواني التي تحدِّد مدة نوم الخيط بعد تحرير القفل. القيمة الافتراضية هي: <code>nil</code>.
==القيمة المعادة==
يعاد عددٌ.


==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Mutex/owned-3F|owned?]]</code>: يعيد  القيمة <code>true</code> إن كان هذا القفل ممسوكًا حاليًا من قبل المهمة الفرعية (thread) الحالية.
* التابع <code>[[Ruby/Mutex/owned-3F|owned?]]</code>: يتحقق إن كان هذا القفل مطبَّق حاليًا من قبل الخيط (thread) الحالي.
* التابع <code>[[Ruby/Mutex/synchronize|synchronize]]</code>: يحصل  على القفل (lock)، وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.  انظر المثال تحت <code>Mutex</code>.
* التابع <code>[[Ruby/Mutex/synchronize|synchronize]]</code>: يطبِّق القفل (lock)، وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Mutex.html#method-i-sleep قسم التابع sleep‎ في الصنف Mutex‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Mutex.html#method-i-sleep قسم التابع sleep‎ في الصنف Mutex‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 05:52، 20 نوفمبر 2018

يحرر التابع sleep القفل (lock)، وينام لعدد محدَّد من الثواني. يطلق الخطأ ThreadError إذا لم يكن الكائن mutex مُقفلًا من قِبَل الخيط (thread) الحالي.

عندما يستأنف الخيط عمله، ستحاول تلك المهمة استعادة القفل وتطبيقه.

لاحظ أن هذا التابع يمكنه إيقاظ (wakeup) الخيط دون استدعاء Thread.wakeup بشكل صريح كما يحدث، على سبيل المثال، عند تلقي إشارة.

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

sleep(timeout = nil)  number

المعاملات

timeout‎

عدد الثواني التي تحدِّد مدة نوم الخيط بعد تحرير القفل. القيمة الافتراضية هي: nil.

القيمة المعادة

يعاد عددٌ.

انظر أيضا

  • التابع owned?‎: يتحقق إن كان هذا القفل مطبَّق حاليًا من قبل الخيط (thread) الحالي.
  • التابع synchronize: يطبِّق القفل (lock)، وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.

مصادر