الفرق بين المراجعتين ل"Ruby/Mutex/synchronize"

من موسوعة حسوب
< Ruby‏ | Mutex
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>synchronize‎</code> الخاص بالصنف <code>Mutex</code> في روبي}}</noinclude> تصنيف: Ruby تص...')
 
سطر 3: سطر 3:
 
[[تصنيف: 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>  ناتج تنفيذ  الكتلة المعطاة.
  
 +
== أمثلة ==
 +
مثال على استخدام  التابع <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>timeout</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‎ في توثيق روبي الرسمي.]

مراجعة 14:04، 27 أكتوبر 2018

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

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

synchronize { ... }  result of the block

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

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

أمثلة

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

semaphore = Mutex.new

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

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

انظر أيضا

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

مصادر