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

من موسوعة حسوب
< Ruby‏ | Mutex
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>synchronize‎</code> الخاص بالصنف <code>Mutex</code> في روبي}}</noinclude> تصنيف: Ruby تص...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>synchronize‎</code> الخاص بالصنف <code>Mutex</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Mutex.synchronize‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Mutex]]
[[تصنيف: Ruby Mutex]]
يحصل التابع <code>synchronize</code> على القفل (lock)، وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.  انظر المثال تحت <code>Mutex</code>.
يطبِّق التابع <code>synchronize</code> القفل (lock) وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">synchronize { ... } → result of the block‎</syntaxhighlight>
<syntaxhighlight lang="ruby">synchronize { ... } → result of the block‎</syntaxhighlight>
==القيمة المُعادة==
==القيمة المعادة==
يعاد ناتج تنفيذ  الكتلة المعطاة.


== أمثلة ==
مثال على استخدام  التابع <code>synchronize</code>:<syntaxhighlight lang="ruby">semaphore = Mutex.new
a = Thread.new {
  semaphore.synchronize {
    # access shared resource
  }
}
b = Thread.new {
  semaphore.synchronize {
    # access shared resource
  }
}</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Mutex/sleep|sleep]]</code>: يحرر القفل وينام لمدة <code>timeout</code> ثانية إذا تم تمريره وكانت قيمته تخالف nil أو forever.  يطلق الخطأ <code>ThreadError</code> إذا لم يتم تأمين <code>mutex</code> من قبل المهمة الفرعية (thread) الحالي.
* التابع <code>[[Ruby/Mutex/sleep|sleep]]</code>: يحرر القفل وينام لمدة محدَّدة من الثواني.  
* التابع <code>[[Ruby/Mutex/try_lock|try_lock]]</code>: يحاول الحصول على القفل (lock) والعودة على الفور. حيث يعيد <code>true</code> إذ أُمِّن القفل.
* التابع <code>[[Ruby/Mutex/try_lock|try_lock]]</code>: يحاول الحصول على القفل (lock) والعودة مباشرةً.


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

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

يطبِّق التابع synchronize القفل (lock) وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.

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

synchronize { ... }  result of the block

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

يعاد ناتج تنفيذ الكتلة المعطاة.

أمثلة

مثال على استخدام التابع synchronize:

semaphore = Mutex.new

a = Thread.new {
  semaphore.synchronize {
    # access shared resource
  }
}

b = Thread.new {
  semaphore.synchronize {
    # access shared resource
  }
}

انظر أيضا

  • التابع sleep: يحرر القفل وينام لمدة محدَّدة من الثواني.
  • التابع try_lock: يحاول الحصول على القفل (lock) والعودة مباشرةً.

مصادر