الفرق بين المراجعتين لصفحة: «Ruby/ConditionVariable»
< Ruby
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: | <noinclude>{{DISPLAYTITLE: الصنف <code>ConditionVariable</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby ConditionVariable]] | [[تصنيف: Ruby ConditionVariable]] | ||
توسع كائنات الصنف <code>ConditionVariable</code> عمل الصنف <code>[[Ruby/Mutex|Mutex]]</code>. فمن الممكن باستخدام المتغيرات الشرطية إيقاف مهمة حرجة (critical section) في أثناء تنفيذها إلى حين إتاحة مورد ما. | |||
إليك | إليك المثال التالي:<syntaxhighlight lang="ruby"> | ||
mutex = Mutex.new | mutex = Mutex.new | ||
resource = ConditionVariable.new | resource = ConditionVariable.new | ||
سطر 24: | سطر 24: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==توابع الصنف العامة (Public Class Methods)== | ==توابع الصنف العامة (Public Class Methods)== | ||
===[[Ruby/ConditionVariable/new| | ===[[Ruby/ConditionVariable/new|<code>new</code>]]=== | ||
ينشئ | ينشئ نسخة جديدة من الصنف <code>ConditionVarialbe</code>. | ||
==توابع الكائن العامة (Public Instance Methods)== | |||
== توابع الكائن العامة (Public Instance Methods) == | ===[[Ruby/ConditionVariable/broadcast|<code>broadcast</code>]]=== | ||
يوقظ جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. | |||
===[[Ruby/ConditionVariable/broadcast| | ===[[Ruby/ConditionVariable/signal|<code>signal</code>]]=== | ||
يوقظ | يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. | ||
===[[Ruby/ConditionVariable/wait|<code>wait</code>]]=== | |||
===[[Ruby/ConditionVariable/signal| | يحرِّر القفل المطبَّق على الكائن <code>[[Ruby/Mutex|mutex]]</code> ثم ينتظر، ثم يستعيد (reacquires) القفل عند الإستيقاظ. | ||
يوقظ | |||
===[[Ruby/ConditionVariable/wait| | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/ConditionVariable.html قسم | *[http://ruby-doc.org/core-2.5.1/ConditionVariable.html قسم الصنف ConditionVariable في توثيق روبي الرسمي.] |
مراجعة 20:51، 10 نوفمبر 2018
توسع كائنات الصنف ConditionVariable
عمل الصنف Mutex
. فمن الممكن باستخدام المتغيرات الشرطية إيقاف مهمة حرجة (critical section) في أثناء تنفيذها إلى حين إتاحة مورد ما.
إليك المثال التالي:
mutex = Mutex.new
resource = ConditionVariable.new
a = Thread.new {
mutex.synchronize {
# Thread 'a' now needs the resource
resource.wait(mutex)
# 'a' can now have the resource
}
}
b = Thread.new {
mutex.synchronize {
# Thread 'b' has finished using the resource
resource.signal
}
}
توابع الصنف العامة (Public Class Methods)
new
ينشئ نسخة جديدة من الصنف ConditionVarialbe
.
توابع الكائن العامة (Public Instance Methods)
broadcast
يوقظ جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن.
signal
يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن.
wait
يحرِّر القفل المطبَّق على الكائن mutex
ثم ينتظر، ثم يستعيد (reacquires) القفل عند الإستيقاظ.