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

من موسوعة حسوب
< Ruby‏ | Mutex
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 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> القفل (lock)، وينام لمدة <code>timeout</code> ثانية إذا تم تمرير الوسيط <code>timeout</code> وكانت قيمته تخالف <code>nil</code> أو اللا نهائية (<code>forever)</code>. يطلق الخطأ <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>
سطر 13: سطر 13:
===<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>[[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)، وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.

مصادر