الفرق بين المراجعتين ل"Ruby/Mutex"
< Ruby
اذهب إلى التنقل
اذهب إلى البحث
جميل-بيلوني (نقاش | مساهمات) ط (مراجعة وتدقيق.) |
|||
سطر 1: | سطر 1: | ||
− | يمكن استخدام | + | يمكن استخدام الصنف <code>Mutex</code> وكائناته كواجهة لتنسيق الوصول إلى البيانات المشتركة من عدة خيوط (threads) موجودة وتعمل في نفس الوقت. إليك هذا المثال:<syntaxhighlight lang="ruby"> |
semaphore = Mutex.new | semaphore = Mutex.new | ||
سطر 16: | سطر 16: | ||
==توابع الصنف العامة (Public Class Methods)== | ==توابع الصنف العامة (Public Class Methods)== | ||
− | ===[[Ruby/Mutex/new | | + | ===[[Ruby/Mutex/new | <code>new</code>]]=== |
− | ينشئ | + | ينشئ كائنًا جديدًا من النوع <code>Mutex</code>. |
== توابع النسخة العامة (Public Instance Methods) == | == توابع النسخة العامة (Public Instance Methods) == | ||
− | ===[[Ruby/Mutex/lock | | + | ===[[Ruby/Mutex/lock | <code>lock</code>]]=== |
يحاول مسك القفل (grab the lock)، وينتظر إذا لم يكن متاحًا. | يحاول مسك القفل (grab the lock)، وينتظر إذا لم يكن متاحًا. | ||
− | ===[[Ruby/Mutex/locked-3F | | + | ===[[Ruby/Mutex/locked-3F | <code>locked?</code>]]=== |
− | + | يتحقق إن كان هذا القفل مُطبَّق حاليًا من قبل خيط (thread) ما. | |
− | ===[[Ruby/Mutex/owned-3F | | + | ===[[Ruby/Mutex/owned-3F | <code>owned?</code>]]=== |
− | + | يتحقق إن كان هذا القفل (lock) مُطبَّق حاليًا من قبل الخيط (thread) الحالي. | |
− | ===[[Ruby/Mutex/sleep | | + | ===[[Ruby/Mutex/sleep | <code>sleep</code>]]=== |
− | يحرر | + | يحرر القفل (lock)، وينام لعدد محدَّد من الثواني. |
− | ===[[Ruby/Mutex/synchronize | | + | ===[[Ruby/Mutex/synchronize | <code>synchronize</code>]]=== |
− | + | يطبِّق القفل (lock) وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة. | |
− | ===[[Ruby/Mutex/try_lock | | + | ===[[Ruby/Mutex/try_lock | <code>try_lock</code>]]=== |
− | يحاول | + | يحاول الحصول على القفل (lock) والعودة مباشرةً، إذ يعيد القيمة <code>true</code> إن كان القفل مؤمنًا (granted). |
− | ===[[Ruby/Mutex/unlock | | + | ===[[Ruby/Mutex/unlock | <code>unlock</code>]]=== |
− | يحرر | + | يحرر القفل (lock). |
==مصادر<span> </span>== | ==مصادر<span> </span>== | ||
− | *[http://ruby-doc.org/core-2.5.1/Mutex.html قسم | + | *[http://ruby-doc.org/core-2.5.1/Mutex.html قسم الصنف Mutex في توثيق روبي الرسمي.] |
− | <noinclude>{{DISPLAYTITLE: | + | <noinclude>{{DISPLAYTITLE:الصنف <code>Mutex</code> في روبي}}</noinclude> |
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
+ | [[تصنيف: Ruby Class]] | ||
[[تصنيف: Ruby Mutex]] | [[تصنيف: Ruby Mutex]] |
المراجعة الحالية بتاريخ 05:55، 20 نوفمبر 2018
يمكن استخدام الصنف Mutex
وكائناته كواجهة لتنسيق الوصول إلى البيانات المشتركة من عدة خيوط (threads) موجودة وتعمل في نفس الوقت. إليك هذا المثال:
semaphore = Mutex.new
a = Thread.new {
semaphore.synchronize {
# access shared resource
}
}
b = Thread.new {
semaphore.synchronize {
# access shared resource
}
}
توابع الصنف العامة (Public Class Methods)
new
ينشئ كائنًا جديدًا من النوع Mutex
.
توابع النسخة العامة (Public Instance Methods)
lock
يحاول مسك القفل (grab the lock)، وينتظر إذا لم يكن متاحًا.
locked?
يتحقق إن كان هذا القفل مُطبَّق حاليًا من قبل خيط (thread) ما.
owned?
يتحقق إن كان هذا القفل (lock) مُطبَّق حاليًا من قبل الخيط (thread) الحالي.
sleep
يحرر القفل (lock)، وينام لعدد محدَّد من الثواني.
synchronize
يطبِّق القفل (lock) وينفذ الكتلة المعطاة، ثم يحرر القفل عند اكتمال تنفيذ الكتلة.
try_lock
يحاول الحصول على القفل (lock) والعودة مباشرةً، إذ يعيد القيمة true
إن كان القفل مؤمنًا (granted).
unlock
يحرر القفل (lock).