نتائج البحث
اذهب إلى التنقل
اذهب إلى البحث
الصنف Thread في روبي
المهام الفرعية (Threads، وتدعى "الخيوط" أيضًا) هي الطريقة التي تنفذ بها روبي البرمجة المتزامنة (concurrent programming). البرامج التي تتطلب تنفيذ عدة مهام فرعية يمكنها استخدام الصنف Thread. على سبيل المثال، يمكننا إنشاء مهمة فرعية جديدة منفصلة عن المهمة الرئيسية باستخدام التابع new. thr = Thread.new { puts "Whats the big deal" }
ثم يمكننا إيقاف تنفيذ المهمة الفرعية الرئيسية مؤقتًا إلى حين إنتهاء المهمة الفرعية خاصتنا باستخدام التابع join: thr.join #=> "Whats the big deal"
في حال عدم استدعاء التابع join قبل ...
المعامل [] الخاص بالصنف Thread في روبي
يعدُّ المعامل [] مرجعًا للخاصيات (Attribute Reference)، إذ يُعيد قيمة متغير محلي الليف fiber) local variable، أو الليف الأصلي للمهمة الفرعية الحالية إن لم يكن المتغير موجودًا داخل ليف) باستخدام إما رمز أو سلسلة نصية. إن لم يكن المتغير المعطى (انظر فقرة البنية العامة) موجودًا، فستعاد nil. [
Thread.new { Thread.current["name"] = "A" },
Thread.new { Thread.current[:name] = "B" },
Thread.new { Thread.current["name"] = "C" }
].each do |th|
th.join
puts "#{th.inspect}: #{th[:name]}"
end
هذا سوف ينتج: ...
المعامل []= الخاص بالصنف Thread في روبي
يعيّن المعامل [] عندما يُستدعى بالشكل thr[sym] = obj قيمة المتغير sym محلي الليف (fiber-local variable)، باستخدام إما الرمز أو السلسلة النصية obj أو ينشئها. ويسمى آنذاك معامل تعيين الخاصيات. بالنسبة للمتغيرات محلية المهمة الفرعية (thread-local variables)، يرجى الاطلاع على thread_variable_set و thread_variable_get. البنية العامة thr[sym] = obj→ obj
القيمة المعادة تعاد قيمة المتغير محلي الليف (fiber-local variable) بعد تعيينها إلى القيمة obj. انظر أيضًا المعامل []: يُعيد قيمة متغير محلي الليف fiber) local variable، أو الليف الأصلي للمهمة الفرعية الحالية ...
وحدة الخيوط العاملة (Worker Threads) في Node.js
مؤشر الاستقرار: 1 - تجريبي توفر وحدة worker طريقة لإنشاء بيئات متعددة تعمل علي خيوط مستقلة، ولإنشاء قنوات رسائل بينها. ويمكن الوصول إليها باستخدام الراية --experimental-worker flag بالإضافة إلى: const worker = require('worker_threads');
وتفيد الخيوط العاملة (Workers) في أداء عمليات JavaScript كثيفة الاستخدام لوحدة المعالجة المركزية؛ ويجب ألَّا تستخدم في عمليات الإدخال والإخراج I/O، إذ تتعامل آلياتُ Node.js المدمجة لتنفيذ العمليات بشكل غير متزامن معها بشكل أكثر كفاءة من خيوط Worker. علي عكس العمليات التابعة أو عند استخدام وحدة cluster، يمكن ...
التابع Thread.thread_variable_get في روبي
يُعيد التابع thread_variable_get قيمة المتغير المحلي للمهمة الفرعية (thread local variable) الذي تم تعيينه. لاحظ أنَّ هذه المتغيرات تختلف عن القيم محلية الألياف (fiber local values). بالنسبة للقيم محلية الألياف، يرجى الاطلاع على المعاملين [] و []=. تُحمل القيم محلية المهمة الفرعية مع المهام الفرعية، وذلك على خلاف الألياف. البنية العامة thread_variable_get(key) → obj or nil
المعاملات key سلسلة نصية أو رمز. القيمة المعادة تعاد قيمة المتغير المحلي للمهمة الفرعية الذي تم تعيينه. أمثلة مثال على استخدام التابع thread_variable_get: Thread.new ...
التابع Thread.report_on_exception= في روبي
يضبط التابع report_on_exception عند استدعائه بالشكل report_on_exception= boolean حالة "التبليغ عند الاستثناء" (report on exception). عندما تكون القيمة المنطقية هي true، سترث كل المهام الفرعية التي تم إنشاؤها لاحقا الشرط (condition) وتبعث رسالة إلى المجرى $stderr إذا أدى استثناء ما إلى إنهاء مهمة فرعية. يوجد أيضًا تابع نسخة (instance level method) لتعيين هذا الخيار لمهمة فرعية معينة؛ راجع report_on_exception=. البنية العامة report_on_exception= boolean→ true or false
القيمة المعادة تعاد القيمة المنطقية boolean التي تمثل الحالة الجديدة لحالة "التبليغ عند الاستثناء". ...
التابع Thread.thread_variables في روبي
يُعيد التابع thread_variables مصفوفة من أسماء المتغيرات المحلية في المهمة الفرعية (thread-local) على شكل رموز. لاحظ أن هذه المتغيرات ليست محلية الألياف (fiber local). يرجى الاطلاع على صفحة المعامل [] والتابع thread_variable_get لمزيد من التفاصيل. البنية العامة thread_variables→ array
القيمة المعادة تعاد مصفوفة من أسماء المتغيرات المحلية في المهمة الفرعية (thread-local) على شكل رموز. أمثلة مثال على استخدام التابع thread_variables: thr = Thread.new do
Thread.current.thread_variable_set(:cat, 'meow')
Thread.current.thread_variable_set("dog", 'woof')
end
thr.join ...
الصنف ConditionVariable في روبي
توسع كائنات الصنف 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 {
...
التابع Mutex.locked? في روبي
يتحقق التابع locked? إن كان هذا القفل مُطبَّق حاليًا من قبل خيط (thread) ما. البنية العامة locked? → true or false
القيمة المعادة تعاد القيمة true إن كان هذا القفل مُطبَّق حاليًا من قبل خيط (thread) ما، وإلا فستعاد القيمة false. انظر أيضا التابع lock: يحاول مسك القفل (grab the lock)، وينتظر إذا لم يكن متاحًا. التابع owned?: يتحقق إن كان هذا القفل مُطبَّق حاليًا من قبل الخيط (thread) الحالي. مصادر قسم التابع locked? في الصنف Mutex في توثيق روبي الرسمي.
التابع Thread.DEBUG في روبي
يُعيد التابع DEBUG مستوى التصحيح في المهمة الفرعية (thread debug level). متوفر فقط في حالة تصريفه (compiled) مع الخيار THREAD_DEBUG = -1. البنية العامة DEBUG → num
القيمة المعادة يعاد عددٌ يمثل مستوى التصحيح في المهمة الفرعية (thread debug level). انظر أيضًا التابع DEBUG=: يعيّن عند استدعائه بالشكل DEBUG = num قيمة مستوى تصحيح المهمة الفرعية (thread debug level) إلى القيمة num. مصادر قسم التابع DEBUG في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.abort_on_exception= في روبي
يضبط التابع abort_on_exception عند استدعائه بالشكل abort_on_exception= boolean حالة الشرط العام "المقاطعة عند حدوث استثناء؟" (abort on exception) إلى القيمة المنطقية boolean. عندما تكون القيمة المنطقية هي true، إذا تم إيقاف هذه المهمة الفرعية بواسطة استثناء، فسيطلق ذلك الاستثناء مجددًا في المهمة الفرعية الرئيسية. وستعاد الحالة الجديدة. يوجد أيضًا تابع نسخة (instance method) لتعيين هذا الخيار لمهمة فرعية معينة، راجع الصفحة abort_on_exception=. البنية العامة abort_on_exception= boolean→ true or false
القيمة المعادة تعاد القيمة المنطقية boolean بعد ضبطها للشرط العام "المقاطعة ...
التابع ThreadGroup.add في روبي
يضيف التابع add الخيط المُمرَّر إليه إلى مجموعة الخيوط التي استدعي معها. انتبه إلى أن الخيط سيزال من أية مجموعة خيوط أضيف إليها مسبقًا. البنية العامة add(thread) → thgrp
المعاملات thread الخيط المراد إضافته إلى المجموعة المعطاة. القيمة المعادة تعاد مجموعة الخيوط المعطاة بعد إضافة الخيط thread إليها. أمثلة مثال على استعمال التابع add: puts "Initial group is #{ThreadGroup::Default.list}"
tg = ThreadGroup.new
t1 = Thread.new { sleep }
t2 = Thread.new { sleep }
puts "t1 is #{t1}"
puts "t2 is #{t2}"
tg.add(t1)
puts "Initial group now ...
التابع Thread.thread_variable_set في روبي
يعين التابع thread_variable_set قيمة متغير محلي ذي اسم محدَّد في المهمة الفرعية (thread local) إلى قيمة معيَّنة. لاحظ أنَّ هذه المتغيرات محلية في المهمة الفرعية، وليس في الألياف. يرجى الاطلاع على صفحة التابع thread_variable_get والمعامل [] لمزيد من المعلومات. البنية العامة thread_variable_set(key, value)
المعاملات key اسم المتغير. value قيمة المتغير. انظر أيضًا التابع thread_variable_get: يُعيد قيمة المتغير المحلي في المهمة الفرعية (thread local variable) الذي تم تعيينه. التابع thread_variables: يُعيد مصفوفة من أسماء المتغيرات المحلية في المهمة الفرعية (thread-local) على شكل رموز. مصادر ...
التابع ConditionVariable.wait في روبي
يحرِّر التابع wait القفل المطبَّق (held) على الكائن mutex وينتظر، ثمَّ يستعيد القفل عند الإستيقاظ. في حال تمرير الوسيط timeout (انظُر فقرة البنية العامة)، يُعيِد هذا التابع بعد مرور timeout ثانية، حتى في حال عدم الإشارة (signal) من خيط آخر (thread). البنية العامة wait(mutex, timeout=nil)
المعاملات mutex كائنٌ من النوع Mutex. timeout يمثل عدد الثواني التي يجب أن ينتظرها التابع قبل الإعادة، قيمته الإفتراضية هي: nil. انظر أيضًا التابع signal: يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. ...
الصنف ThreadGroup في روبي
يوفر الصنف ThreadGroup وسيلة لتتبع عددٍ من الخيوط (threads) باستمرار وكأنهم مجموعة واحدة. يمكن أن يكون الخيط Thread في مجموعة خيوط ThreadGroup واحدة على الأكثر فقط. وإضافة هذا الخيوط إلى مجموعة جديدة يؤدي إلى إزالته من أية مجموعة أضيف إليها سابقًا. الخيوط المنشأة حديثًا تنتمي إلى المجموعة نفسها التي أُنشِئَت هذه الخيوط منها. الثوابت Default المجموعة ThreadGroup الافتراضية التي تُنشَأ عند بدء روبي. تنتمي جميع الخيوط لهذه المجموعة بشكل افتراضي. توابع النسخة العامة add يضيف الخيط المُمرَّر إليه إلى مجموعة ...
التابع Thread.thread_variable? في روبي
يتحقق التابع thread_variable? إن كانت السلسلة النصية أو الرمز المعطى موجودًا كمتغير محلي للمهمة الفرعية (thread-local variable). لاحظ أنَّ هذه المتغيرات ليست متغيرات محلية الألياف (fiber local variables). يرجى الاطلاع على صفحة المعامل [] والتابع thread_variable_get لمزيد من التفاصيل. البنية العامة thread_variable?(key)→ true or false
المعاملات key سلسلة نصية أو رمز. القيمة المعادة تعاد القيمة true إن كانت السلسلة النصية أو الرمز key المعطى موجودًا كمتغير محلي للمهمة الفرعية (thread-local variable)، وإلا فستعاد القيمة false. أمثلة مثال على استخدام التابع thread_variable?: ...
التابع Thread.new في روبي
ينشئ التابع new مهمة فرعية جديدة تنفّذ الكتلة المعطاة. البنية العامة new { ... }→ thread
new(*args, &proc)→ thread
new(*args) { |args| ... } → thread
سيتم تمرير كل المعاملات args الممررة إلى التابع new إلى الكتلة. سيُطلق الاستثناء ThreadError إذا تم استدعاء new دون كتلة. إذا كنت ترغب باشتقاق صنف فرعي (subclass) من Thread، تأكد من استدعاء المتغير super داخل التابع initialize، وإلا سيُطلق الاستثناء ThreadError. المعاملات args المعاملات التي يراد تمريرها إلى الكتلة. proc كائن من النوع Proc. القيمة المعادة تعاد مهمة ...
الصنف Mutex في روبي
يمكن استخدام الصنف 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 ...
التابع Mutex.owned? في روبي
يتحقق التابع owned? إن كان هذا القفل (lock) مُطبَّق حاليًا من قبل الخيط (thread) الحالي. البنية العامة owned? → true or false
القيمة المعادة تُعاد القيمة true إن كان هذا القفل مُطبَّق حاليًا من قبل الخيط الحالي، وإلا فستُعاد القيمة false. انظر أيضا التابع locked?: يتحقق إن كان هذا القفل مُطبَّق حاليًا من قبل الخيط (thread) ما. مصادر قسم التابع owned? في الصنف Mutex في توثيق روبي الرسمي.
التابع Thread.DEBUG= في روبي
يعيّن التابع DEBUG عند استدعائه بالشكل DEBUG = num قيمة مستوى تصحيح المهمة الفرعية (thread debug level) إلى القيمة num. متوفر فقط في حالة تصريفه (compiled) مع الخيار THREAD_DEBUG = -1. البنية العامة DEBUG = num
انظر أيضا التابع DEBUG: يُعيد مستوى التصحيح في المهمة الفرعية (thread debug level). مصادر قسم التابع DEBUG= في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.fetch في روبي
البنية العامة fetch(*args)
المعاملات args انظر أيضًا التابع group: يُعيد مجموعة الخيوط ThreadGroup التي تحتوي على المهمة الفرعية المعطاة، أو يُعيد nil إذا لم تكن المهمة الفرعية عضوًا في أي مجموعة. التابع join: يوقف عند استدعائه تنفيذ المهمة الفرعية المُستدعيَة (calling thread)، وبدء تنفيذ المهمة الفرعية التي استُدعي معها. مصادر قسم التابع fetch في الصنف Thread في توثيق روبي الرسمي.
التابع ConditionVariable.signal في روبي
يوقظ التابع signal أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر قفلًا (lock) معيَّنًا. البنية العامة signal()
انظر أيضًا التابع broadcast: يوقظ جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. التابع wait: يحرِّر القفل المطبَّق (held) على الكائن mutex وينتظر، ثمَّ يستعيد القفل عند الإستيقاظ. مصادر قسم التابع signal في الصنف ConditionVariable في توثيق روبي الرسمي.
التابع ConditionVariable.broadcast في روبي
يوقظ التابع broadcast جميع المهام الفرعية (threads) التي تنتظر قفًلًا (lock) معيَّنًا. البنية العامة broadcast()
انظر أيضًا التابع signal: يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. التابع wait: يحرِّر القفل المطبَّق (held) على الكائن mutex وينتظر، ثمَّ يستعيد القفل عند الإستيقاظ. مصادر قسم التابع broadcast في الصنف ConditionVariable في توثيق روبي الرسمي.
التابع Mutex.lock في روبي
يحاول التابع lock مسك القفل (grab the lock)، وينتظر إذا لم يكن متاحًا. يطلق الخطأ ThreadError إذا كان الكائن mutex مُقفلًا (locked) من قبل الخيط (thread) الحالي. البنية العامة lock → self
القيمة المعادة يعاد الكائن المعطى نفسه. انظر أيضا التابع locked?: يتحقق إن كان هذا القفل ممسوكًا حاليًا من قبل خيط (thread) ما. التابع new: ينشئ كائنا جديدًا من النوع Mutex. مصادر قسم التابع lock في الصنف Mutex في توثيق روبي الرسمي.
التابع Thread.start في روبي
يشبه التابع start التابع new بشكل أساسي إلا أنه عند اشتقاق صنف فرعي (subclassed) من Thread، فإنَّ استدعاء start في ذلك الصنف الفرعي لن يستدعي تابع الصنف الفرعي initialize. البنية العامة start([args]*) {|args| block }→ thread
المعاملات args وسائط تُمرر إلى الكتلة. القيمة المعادة يعاد كائن من النوع Thread. انظر أيضًا التابع stop: يوقف تنفيذ المهمة الفرعية الحالية. مصادر قسم التابع start في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.fork في روبي
التابع fork مكافئ للتابع new. إلا أنه في حال اشتقاق صنف فرعي من Thread، فإنَّ استدعاء التابع start في ذلك الصنف الفرعي لن يستدعي تابع الصنف الفرعي initialize. البنية العامة fork([args]*) {|args| block } → thread
القيمة المعادة يعيد كائنا من النوع Thread. انظر أيضًا التابع exit: ينهي المهمة الفرعية قيد التشغيل، ويُجدول مهمة فرعية أخرى ليتم تشغيلها. مصادر قسم التابع fork في الصنف Thread في توثيق روبي الرسمي.
الصنف Queue في روبي
يُنفِّذ الصنف Queue طوابير الانتظار متعدِّدة المنتجين (multi-producer)، ومتعدِّدة المستهلكين (multi-consumer). إنَّه مفيدٌ بشكلٍ خاصٍّ في البرمجة المعتمدة على الخيوط (threaded programming) عندما يتحتَّم على المعلومات أن تُتبادل بأمان بين خيوطٍ (threads) متعدَّدة. يُنفِّذ الصنف Queue كل دلالات القفل المطلوبة. يُنفِّذ الصنف طوابير الانتظار التي من النوع FIFO (من يدخل أولًا يخرج أولًا). في هذا النوع، المهام التي تضاف أولًا في الطابور هي المهام التي تعاد أولًا منه. queue = Queue.new
producer = Thread.new do
5.times do |i|
...
التابع ConditionVariable.new في روبي
ينشئ التابع new نسخة جديدة من الصنف ConditionVariable. البنية العامة new()
القيمة المعادة تُعاد نسخةٌ جديدةٌ من الصنف ConditionVarialbe. أمثلة مثالٌ عن استخدام التابع new: mutex = Mutex.new # => ConditionVarialbe سيعيد كائنا من الصنف
انظر أيضًا التابع broadcast: يوقظ جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. التابع signal: يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. التابع wait: يحرِّر القفل المطبَّق (held) على الكائن mutex وينتظر، ثمَّ يستعيد القفل عند الإستيقاظ. ...
التابع ConditionVariable.new في روبي
ينشئ التابع new نسخة جديدة من الصنف ConditionVariable. البنية العامة new()
القيمة المعادة تُعاد نسخةٌ جديدةٌ من الصنف ConditionVarialbe. أمثلة مثالٌ عن استخدام التابع new: mutex = Mutex.new # => ConditionVarialbe سيعيد كائنا من الصنف
انظر أيضًا التابع broadcast: يوقظ جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. التابع signal: يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. التابع wait: يحرِّر القفل المطبَّق (held) على الكائن mutex وينتظر، ثمَّ يستعيد القفل عند الإستيقاظ. ...
التابع Thread.join في روبي
يوقف التابع join عند استدعائه تنفيذ المهمة الفرعية المُستدعيَة (calling thread)، وبدء تنفيذ المهمة الفرعية التي استُدعي معها. ولن يعود حتى تخرج (exits) المهمة الفرعية، أو حتى مرور فترة زمينة محدَّدة. في حالة انتهاء المهلة الزمنية، ستعاد القيمة nil؛ خلا ذلك، ستُعاد المهمة الفرعية. سيتم إنهاء كل المهام الفرعية غير المضمومة (joined) عندما يخرج البرنامج الرئيسي. إن أطلقت المهمة الفرعية سابقًا استثناء ولم يتم تعيين الرايتين abort_on_exception أو DEBUG (أي أنه لم تتم معالجة الاستثناء بعد)، فسيُعالج في هذا الوقت. البنية ...
التابع ThreadGroup.list في روبي
يعيد التابع list مصفوفة تحوي جميع الكائنات Thread الموجودة والتابعة لمجموعة الخيوط التي استدعيت معه. البنية العامة list → array
القيمة المعادة تعاد مصفوفة تحوي جميع الكائنات Thread الموجودة والتابعة لمجموعة الخيوط المعطاة. أمثلة مثال على استعمال التابع list: ThreadGroup::Default.list #=> [#<Thread:0x401bdf4c run>]
انظر أيضًا التابع add: يضيف الخيط المُمرَّر إليه إلى مجموعة الخيوط التي استدعي معها. التابع enclose: يمنع إضافة أو إزالة أي خيط من مجموعة الخيوط التي استدعيت معه. التابع ?enclosed: يتحقق إذا كانت مجموعة الخيوط ...
التابع Queue.pop في روبي
يجلب التابع pop بياناتٍ من الطابور الذي استُدعي معه. إذا كان طابور الانتظار فارغًا، يُعلَّق الخيط (thread) الذي استدعى التابع حتى تضاف بيانات إلى هذا الطابور. إذا مُرِّرت القيمة true إلى التابع، فلن يُعلَّق الخيط، وسيُرمى الاستثناء ThreadError آنذاك. البنية العامة pop(non_blocock=false)
المعاملات non_block قيمة منطقية تحدِّد إن كان يراد تعليق عمل الخيط إن كان الطابور فارغًا أم لا. القيمة الافتراضية له هي: false. القيم المعادة تُعاد البيانات المجلوبة من الطابور المعطى. انظر أيضًا التابع push : يضيف الكائن المُمرَّر إليه ...
التابع ThreadGroup.enclose في روبي
يمنع التابع enclose إضافة أو إزالة أي خيط من مجموعة الخيوط التي استدعيت معه. لا يزال بإمكان الخيوط الجديدة أن تُبدَأ في مجموعة خيوط مغلقة. البنية العامة enclose → thgrp
القيمة المعادة تعاد مجموعة الخيوط المعطاة بعد إغلاقها. أمثلة مثال على استعمال التابع enclose: ThreadGroup::Default.enclose #=> #<ThreadGroup:0x4029d914>
thr = Thread.new { Thread.stop } #=> #<Thread:0x402a7210 sleep>
tg = ThreadGroup.new ...
التابع Thread.priority في روبي
يُعيد التابع priority أولوية المهمة الفرعية التي استدعيت معه. تورث القيمة الافتراضية من المهمة الفرعية الحالية المسؤولة عن إنشاء المهمة الفرعية الجديدة، أو تكون القيمة صفر للمهمة الفرعية الرئيسية الابتدائية (initial main thread)؛ سيتم تشغيل المهام الفرعية ذات الأولوية العالية بشكل أكثر تكرارًا من مثيلاتها ذات الأولوية المنخفضة (ولكنها ستُشغّل على أي حال). هذا مجرد تلميح يستعمله مُجدوِل المهام الفرعية (thread scheduler) في روبي. مع ذلك، قد يتم تجاهله في بعض أنظمة التشغيل. البنية العامة priority→ integer
القيمة المعادة يعاد عدد ...
التابع Mutex.sleep في روبي
يحرر التابع sleep القفل (lock)، وينام لعدد محدَّد من الثواني. يطلق الخطأ ThreadError إذا لم يكن الكائن mutex مُقفلًا من قِبَل الخيط (thread) الحالي. عندما يستأنف الخيط عمله، ستحاول تلك المهمة استعادة القفل وتطبيقه. لاحظ أن هذا التابع يمكنه إيقاظ (wakeup) الخيط دون استدعاء Thread.wakeup بشكل صريح كما يحدث، على سبيل المثال، عند تلقي إشارة. البنية العامة sleep(timeout = nil) → number
المعاملات timeout عدد الثواني التي تحدِّد مدة نوم الخيط بعد تحرير القفل. القيمة الافتراضية هي: nil. القيمة المعادة يعاد ...
التابع Process.detach في روبي
تحتفظ بعض أنظمة التشغيل بحالة العمليات الفرعية التي أُنهيَت حتى تجمع العملية الأب تلك الحالة (باستعمال أنواع مختلفة من wait()). إن لم تجمع العملية الأب هذه الحالة على الإطلاق، تبقى العملية الابن متراكمة ضمن العمليات الميتة (zombie process). يمنع التابع Process::detach هذا السلوك عبر ضبط خيط منفصل من روبي وظيفته الوحيدة هي جمع الحالة لمعرف العملية (pid) عندما تُنهَى. استعمل التابع detach فقط عندما لا تنوي انتظار العملية الابن لكي تُنهَى بشكل صريح. يعيد الخيط المُنتَظِر (waiting thread) حالة الخروج ...
تابع النسخة Thread.abort_on_exception في روبي
يُعيد التابع abort_on_exception حالة الشرط المحلي (thread-local) "المقاطعة عند حدوث استثناء؟" (abort on exception) في المهمة الفرعية التي استُدعي معها. القيمة الافتراضية هي false. يوجد أيضًا تابع صنف (class method) لتعيين هذا الخيار في كل المهام الفرعية؛ راجع صفحة abort_on_exception. البنية العامة abort_on_exception→ true or false
القيمة المعادة تعاد حالة الشرط المحلي (thread-local) "المقاطعة عند حدوث استثناء؟" (abort on exception). في المهمة الفرعية المعطاة. انظر أيضًا التابع abort_on_exception =: يضبط عند استدعائه بالشكل abort_on_exception= boolean حالة الشرط المحلي "المقاطعة عند حدوث استثناء؟" (abort on exception) ...
التابع Dir.chdir في روبي
يغيِّر التابع chdir مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. عند استدعائه بدون تمرير وسيط، فسيغيِّر مجلد العمل إلى قيمة متغير البيئة HOME أو LOGDIR.SystemCallError (وربما Errno::ENOENT) إذا كان المجلد المُستهدَف غير موجود. في حال تمرير كتلة برمجية إلى التابع، فسيُمرّر إليها اسم المجلد الحالي الجديد، وستنفّذ الكتلة على اعتباره المجلد الحالي. بعد تنفيذ الكتلة والخروج منها، سيُستعَاد مجلد العمل الأصلي آنذاك. وتكون القيمة المعادة للتابع chdir مساويةً لقيمة الكتلة. يمكن أن تتشعّب الكتل chdir، ولكن سيُطلَق ...
التابع Mutex.unlock في روبي
يحرر التابع unlock القفل (lock). ويطلق الاستثناء ThreadError إذا لم يكن الكائن mutex مُقفلًا من قبل الخيط (thread) الحالي. البنية العامة unlock → self
القيمة المعادة يعاد الكائن المعطى نفسه. انظر أيضا التابع try_lock: يحاول الحصول على القفل (lock) والعودة مباشرةً. مصادر قسم التابع unlock في الصنف Mutex في توثيق روبي الرسمي.
الصنف FiberError في روبي
يُرمى الاستثناء FiberError عند محاولة إجراء عمليّةٌ غير صحيحةٍ في الصنف Fiber، تحديدًا عند محاولة استدعاء/استئناف ليف ميِّت، أو محاولة التّوليد من الليف الجذر (root fiber)، أو استدعاء ليفٍ عبر خيوطٍ (threads). fiber = Fiber.new{}
fiber.resume #=> nil
fiber.resume #=> FiberError: dead fiber called
مصادر صفحة الصنف FiberError في توثيق روبي الرسمي.
الصنف ThreadError في روبي
يُطلق الاستثناء ThreadError في حال محاولة تنفيذ عملية غير صالحة في مهمة فرعية. على سبيل المثال، في حال لم تبدأ مهمة فرعية أخرى مثل ما هو موضح في الشيفرة التالية: Thread.stop
سيطلق استثناء بالشكل التالي: ThreadError: stopping only thread
note: use sleep to stop forever
مصادر صفحة الصنف ThreadError في توثيق روبي الرسمي.
التابع Queue.size في روبي
يعدُّ التابع size اسمًا بديلًا للتابع length . البنية العامة size()
انظر أيضًا التابع length : يعيد طول الطابور الذي استُدعي معه. التابع num_waiting : يعيد عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. مصادر صفحة التابع size في الصنف queue في توثيق روبي الرسمي.
التابع Queue.deq في روبي
يعدُّ التابع deq اسماً بديلًا للتابع pop . البنية العامة deq(*args)
المعاملات args* المعاملات المُمرَّرة. انظر أيضًا التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. التابع length : يعيد طول الطابور الذي استُدعي معه. التابع num_waiting : يعيد عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. مصادر صفحة التابع deq في الصنف queue في توثيق روبي الرسمي.
التابع Queue.shift في روبي
يعدُّ التابع shift اسمًا بديلًا للتابع pop . البنية العامة shift(*args)
المعاملات args* المعاملات المُمرَّرة. انظر أيضًا التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. التابع length : يعيد طول الطابور الذي استُدعي معه. التابع num_waiting : يعيد عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. مصادر صفحة التابع shift في الصنف queue في توثيق روبي الرسمي.
التابع Queue.num_waiting في روبي
يعيد التابع num_waiting عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. البنية العامة num_waiting()
القيم المعادة يُعاد عدد الخيوط المنتظرة في الطابور المعطى. انظر أيضًا التابع length : يعيد طول الطابور الذي استُدعي معه. التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. التابع close : يغلق الطابور الذي استُدعي معه. مصادر صفحة التابع num_waiting في الصنف queue في توثيق روبي الرسمي.
التابع Thread.pass في روبي
يعطي التابع pass إلى مُجدوِل المهام الفرعية (thread scheduler) تلميحًا لتمرير التنفيذ إلى مهمة فرعية أخرى. مسألة تبديل المهمة الفرعية قيد التشغيل من عدمها تعتمد على نظام التشغيل والمعالج المستخدمين. البنية العامة pass→ nil
القيمة المعادة تعاد القيمة nil. انظر أيضًا التابع new: ينشئ مهمة فرعية جديدة لتنفيذ الكتلة المعطاة. مصادر قسم التابع pass في الصنف Thread في توثيق روبي الرسمي.
التابع Queue.enq في روبي
يُعدُّ التابع enq اسمًا بديلًا للتابع push . البنية العامة enq(p1)
المعاملات p1 الكائن المراد إضافته إلى الطابور المعطى. انظر أيضًا التابع push : يضيف الكائن المُمرَّر إليه إلى الطابور المعطى. التابع num_waiting : يعيد عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. مصادر صفحة التابع enq في الصنف queue في توثيق روبي الرسمي.
التابع Location.lineno في روبي
يعيد التابع lineno رقم سطر هذا الإطار. البنية العامة lineno()
القيمة المعادة يعيد التابع lineno رقم سطر هذا الإطار. أمثلة مثال على استخدام التابع lineno مع الملف caller_locations.rb من Thread::Backtrace::Location: loc = c(0..1).first
loc.lineno #=> 2
انظر أيضًا التابع label: يعيد تسمية هذا الإطار. التابع path: يُعيد اسم ملف هذا الإطار. مصادر قسم التابع lineno في الصنف Location في توثيق روبي الرسمي.
التابع Location.path في روبي
يُعيد التابع path اسم ملف هذا الإطار. البنية العامة path()
القيمة المعادة يعاد اسم ملف هذا الإطار. أمثلة مثال على استخدام التابع path مع الملف caller_locations.rb من Thread::Backtrace::Location: loc = c(0..1).first
loc.path #=> caller_locations.rb
انظر أيضًا التابع lineno: يعيد رقم سطر هذا الإطار. التابع to_s: يُعيد سلسلة نصية تمثل هذا الإطار على نمط التابع Kernel.caller . مصادر قسم التابع path في الصنف Location في توثيق روبي الرسمي.
التابع Queue.length في روبي
يعيد التابع length طول الطابور الذي استُدعي معه. يملك هذا التابع اسمًا بديلًا هو: size . البنية العامة length
size
القيم المعادة يُعاد طول طابور الانتظار المعطى. انظر أيضًا التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. التابع num_waiting : يعيد عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. التابع close : يغلق الطابور الذي استُدعي معه. مصادر صفحة التابع length في الصنف queue في توثيق روبي الرسمي.
التابع SizedQueue.close في روبي
يغلق التابع close الطابور الذي استدعي معه. يشبه هذا التابع التابع Queue.close كثيرًا. الاختلاف بينهما هو في سلوك التابع close إذ ينتظر المهام الفرعية (threads) المُجدولة. فإذا كانت هناك مهام فرعية قيد الانتظار، يمكن مقاطعتها عبر إطلاق ClosedQueueError('queue closed'). البنية العامة close
انظر أيضًا التابع new: ينشئ طابورًا ذا طول ثابت. التابع clear: يزيل كل الكائنات من الطابور. مصادر قسم التابع close في الصنف SizedQueue في توثيق روبي الرسمي.
التابع Queue.push في روبي
يضيف التابع push الكائن المُمرَّر إليه إلى الطابور المعطى. يملك هذا التابع اسمين بديلين هما: التابع enq والمعامل >> . البنية العامة push(object)
enq(object)
<<(object)
المعاملات object الكائن المراد إضافته إلى طابور الانتظار. انظر أيضًا التابع length : يعيد طول الطابور الذي استُدعي معه. التابع num_waiting : يعيد عدد الخيوط (threads) المنتظرة في الطابور الذي استُدعي معه. التابع pop : يجلب بياناتٍ من الطابور الذي استُدعي معه. مصادر صفحة التابع push في الصنف queue في توثيق روبي الرسمي.
التابع ?ThreadGroup.enclosed في روبي
يتحقق التابع ?enclosed إذا كانت مجموعة الخيوط التي استدعيت معه مغلقةً أم لا. البنية العامة enclosed? → true or false
القيمة المعادة تعاد القيمة true إذا كانت مجموعة الخيوط المعطاة مغلقةً. خلا ذلك، تعاد القمية false. انظر أيضًا التابع add: يضيف الخيط المُمرَّر إليه إلى مجموعة الخيوط التي استدعي معها. التابع enclose: يمنع إضافة أو إزالة أي خيط من مجموعة الخيوط التي استدعيت معه. التابع list: يعيد مصفوفة تحوي جميع الكائنات Thread الموجودة والتابعة لمجموعة الخيوط التي استدعيت معه. مصادر ...
التابع Exception.backtrace_locations في روبي
يُعيد التّابع backtrace_locations أي تتبع عكسي (backtrace) مرتبط بالاستثناء. هذا التّابع شبيه بالتّابع backtrace، ولكن الأخير هو مصفوفة من Thread::Backtrace::Location. حاليًّا، لا يتأثّر هذا التّابع بالتّابع set_backtrace. البنية العامة backtrace_locations → array
القيم المعادة تُعاد مصفوفة تمثل التتبع العكسي المترافق مع الاستثناء. انظر أيضا التابع backtrace: يُعيد أيَّ تتبّعٍ عكسيٍّ (backtrace) مرتبطٍ بالاستثناء. التابع set_backtrace: يضبط معلومات المصفوفة backtrace الخاصة بكائن الاستثناء. التابع exception: يُعيد المُستقبل (receiver). مصادر صفحة التابع backtrace_locations في الصنف Exception في توثيق روبي الرسمي.
التابع Thread.terminate في روبي
ينهي التابع terminate المهمة الفرعية التي استدعيت معه ويُجدوِل مهمة فرعية أخرى ليتم تشغيلها. إن كانت المهمة الفرعية ستُنهَى، فستعاد المهمة الفرعية. إذا كانت هذه المهمة الفرعية هي المهمة الفرعية الرئيسية (main thread)، أو كانت المهمة الفرعية الأخيرة، فسيتم إنهاء العملية. البنية العامة terminate→ thr or nil
القيمة المعادة تعاد المهمة الفرعية. أو تعاد القيمة nil. انظر أيضًا التابع stop?: يتحقق إن كانت المهمة الفرعية التي استدعيت معه ميتة أو نائمة. التابع kill: ينهي المهمة الفرعية التي استدعيت معه. مصادر قسم التابع terminate في ...
التابع Thread.exit في روبي
ينهي التابع exit المهمة الفرعية قيد التشغيل، ويُجدوِل (schedules) مهمة فرعية أخرى ليتم تشغيلها. إذا تم الإبلاغ بأنَّ هذه المهمة الفرعية ستُنهى، فسيُعيد التابع exit المهمة الفرعية التي استُدعي معها. إن كانت هذه المهمة الفرعية هي المهمة الفرعية الرئيسية (main thread)، أو المهمة الفرعية الأخيرة، فسينهي التابع العملية. البنية العامة exit→ thread
القيمة المعادة تعاد المهمة الفرعية المعطاة. انظر أيضا التابع kill: يؤدي إلى إنهاء المهمة الفرعية التي استُدعي معها، ثم يجدول مهمة فرعية أخرى لتنفيذها. مصادر قسم التابع exit في الصنف ...
التابع Thread.stop في روبي
يوقف التابع stop تنفيذ المهمة الفرعية الحالية، ويضعها في حالة "نوم" (sleep)، ويُجدوٍل (schedules) تنفيذ مهمة فرعية أخرى. البنية العامة stop→ nil
القيمة المعادة تعاد القيمة nil. أمثلة مثال على استخدام التابع stop: a = Thread.new { print "a"; Thread.stop; print "c" }
sleep 0.1 while a.status!='sleep'
print "b"
a.run
a.join
#=> "abc"
انظر أيضًا التابع start: يشبه التابع new بشكل أساسي إلا أنه عند اشتقاق صنف فرعي (subclassed) من Thread، فإنَّ استدعاء start في ذلك الصنف الفرعي لن يستدعي تابع الصنف الفرعي initialize. مصادر قسم التابع ...
التابع Thread.group في روبي
يُعيد التابع group مجموعة الخيوط ThreadGroup التي تحتوي على المهمة الفرعية المعطاة، أو يُعيد nil إذا لم تكن المهمة الفرعية عضوًا في أي مجموعة. البنية العامة group→ thgrp or nil
القيمة المعادة يعاد كائنٌ من النوع ThreadGroup يمثِّل مجموعة الخيوط التي تحوي المهمة الفرعية المعطاة، أو تعاد القيمة nil إذا لم تكن المهمة الفرعية عضوًا في أي مجموعة. أمثلة مثال على استخدام التابع group: Thread.main.group #=> #<ThreadGroup:0x4029d914>
انظر أيضًا التابع join: يوقف عند استدعائه تنفيذ المهمة الفرعية المُستدعيَة (calling thread)، ...
التابع Thread.backtrace_locations في روبي
يُعيد التابع backtrace_locations مكدس التنفيذ (execution stack) الخاص بالمهمة الفرعية على شكل مصفوفة تحتوي على كائنات التعقب (backtrace location objects). يتصرف هذا التابع بطريقة مشابهة للتابع Kernel.caller_locations، إلا أنه يُطبق على مهمة فرعية محددة. انظر صفحة Thread::Backtrace::Location لمزيد من المعلومات. البنية العامة backtrace_locations(*args)→ array or nil
المعاملات args القيمة المعادة يعاد مكدس التنفيذ (execution stack) الخاص بالمهمة الفرعية المعطاة على شكل مصفوفة تحتوي على كائنات التعقب. انظر أيضًا التابع backtrace: يُعيد التِعقب (backtrace) الحالي للمهمة فرعية. مصادر قسم التابع backtrace_locations في الصنف ...
التابع Thread.kill في روبي
ينهي التابع kill المهمة الفرعية المعطاة. يشبه هذا التابع كثيرًا التابع exit. البنية العامة kill(thread)→ thread
المعاملات thread المهمة الفرعية المراد قتلها. القيمة المعادة تعاد مهمة فرعية. أمثلة مثال على استخدام التابع kill: count = 0
a = Thread.new { loop { count += 1 } }
sleep(0.1) #=> 0
Thread.kill(a) #=> #<Thread:0x401b3d30 dead>
count #=> 93947
a.alive? #=> ...
التابع Thread.safe_level في روبي
يُعيد التابع safe_level المستوى الآمن للمهمة الفرعية. يمكن أن يساعد تعيين مستويات الأمان المحلية في المهمة الفرعية (thread-local safe levels) عند تنفيذ أكواد برمجية غير آمنة. البنية العامة safe_level→ integer
القيمة المعادة يعاد عدد صحيح يمثل المستوى الآمن للمهمة الفرعية. أمثلة مثال على استخدام التابع safe_level: thr = Thread.new { $SAFE = 1; sleep }
Thread.current.safe_level #=> 0
thr.safe_level #=> 1
انظر أيضًا التابع set_trace_func: يجعل الكائن proc معالجًا ...
التابع SizedQueue.pop في روبي
يجلب التابع pop بيانات من الطابور. إن كان الطابور فارغًا، يتم تعليق المهمة فرعية المُستدعية (calling thread) حتى يتم إضافة بيانات إلى الطابور. إن مُرِّرت القيمة true إلى التابع، فلن يتم تعليق المهمة فرعية، وسيُطلق الاستثناء ThreadError. البنية العامة pop(non_block=false)
deq(non_block=false)
shift(non_block=false)
المعاملات non_block قيمة منطقية تحدد وضع عدم الحجز. إن كانت قيمة هذا المعامل تساوي true، فلن يتم تعليق المهمة فرعية، وسيُطلق الاستثناء ThreadError. القيمة الافتراضية هي: false. انظر أيضا التابع num_waiting: يعيد عدد المهام الفرعية التي تنتظر في الطابور. التابع push: يضيف كائنًا ...
التابع Thread.raise في روبي
يطلق التابع raise استثناء من مهمة فرعية معينة. لا يلزم أن يكون الُمستدعي (caller) هو المهمة الفرعية التي استُدعي التابع معها. انظر صفحة التابع Kernel.raise لمزيد من المعلومات. البنية العامة raise
raise(string)
raise(exception [, string [, array]])
أمثلة مثال على استخدام التابع raise: Thread.abort_on_exception = true
a = Thread.new { sleep(200) }
a.raise("Gotcha")
هذا سوف ينتج: prog.rb:3: Gotcha (RuntimeError)
from prog.rb:2:in `initialize'
from prog.rb:2:in `new'
from prog.rb:2
انظر أيضا التابع abort_on_exception: يُعيد حالة الشرط المحلي (thread-local) "المقاطعة عند حدوث استثناء؟" (abort on exception) في المهمة الفرعية التي ...
التابع Thread.priority= في روبي
يعين التابع priority عند استدعائه بالشكل priority= integer أولوية المهمة الفرعية التي استدعيت معه إلى القيمة integer. سيتم تشغيل المهام الفرعية ذات الأولوية العالية بشكل أكثر تكرارًا من مثيلاتها ذات الأولوية المنخفضة (ولكنها ستشُغّل على أي حال). هذا مجرد تلميح يستعمله مُجدوِل المهام الفرعية (thread scheduler) في روبي. قد يتم تجاهله على بعض الأنظمة التشغيل. البنية العامة priority= integer→ thr
أمثلة مثال على استخدام التابع priority=: count1 = count2 = 0
a = Thread.new do
loop ...
التابع Module.private_class_method في روبي
يجعل التابع private_class_method توابع صنفٍ محدَّدٍ خاصة (private). غالبًا ما يستخدم هذا التابع لإخفاء الباني new الافتراضي. البنية العامة private_class_method(symbol, ...)→ mod
private_class_method(string, ...)→ mod
المعاملات symbol رمز يمثل التابع. string سلسلة نصية تمثل التابع. يحول هذا المعامل إن أعطي إلى رمز. القيمة المعادة تعاد وحدة. أمثلة مثال على استخدام التابع private_class_method: class SimpleSingleton # Not thread safe
private_class_method :new
def SimpleSingleton.create(*args, &block)
@me = new(*args, &block) if ! @me
@me
end
end
...
التابع Thread.abort_on_exception في روبي
يُعيد التابع abort_on_exception حالة الشرط العام "المقاطعة عند حدوث استثناء؟" (abort on exception). القيمة الافتراضية هي false أي "لا". عند إعطائه القيمة true أي "نعم"، فستوقف أي مهمة فرعية عند حدوث استثناء، وسيُطلق ذلك الاستثناء مجددًا في المهمة الفرعية الرئيسية (main thread). يمكن أيضًا تحديده بواسطة الراية DEBUG$ أو خيار سطر الأوامر -d. يوجد أيضًا تابع نسخة (instance method) لتعيين هذا الخيار في مهمة فرعية معينة، راجع صفحة abort_on_exception لمزيد من المعلومات. البنية العامة abort_on_exception→ true or false
القيمة المعادة تعاد ...
Ruby/Topics
تثبيت روبي توجد طرائق عدَّة لتنزيل وتثبيت روبي على كل منصة وهي: إمَّا استعمال أنظمة مدير الحزم، أو باستعمال المثبِّتات التلقائية، أو باستعمال مدراء روبي. هنالك طريقة أخرى يمكنك بالتأكيد استعمالها لتثبيت روبي وتصريف شيفراتها وهي بنائها من الشيفرة المصدرية مباشرةً. حول روبي يوفر هذا القسم لمحة سريعة عن لغة روبي ونشأتها، وتطورها، ومزاياها التي انفردت بها عن اللغات الأخرى، والتنفيذات المختلفة التي تملكها. البنية العامة بنية اللغة تعد روبي مزيجًا من اللغات البرمجية التالية: Perl، و Smalltalk، و Eiffel، ...
تابع النسخة Thread.kill في روبي
ينهي التابع kill المهمة الفرعية التي استُدعي معها، ثم يجدول مهمة فرعية أخرى لتنفيذها. إذا تم الإبلاغ بأنَّ هذه المهمة الفرعية ستُنهى، فستعاد المهمة الفرعية التي استُدعي معها. إن كانت هذه المهمة الفرعية هي المهمة الفرعية الرئيسية (main thread)، أو المهمة الفرعية الأخيرة، فسينهي التابع العملية. البنية العامة exit → thr or nil
kill → thr or nil
terminate → thr or nil
القيمة المعادة تعاد المهمة الفرعية التي استُدعي معها. انظر أيضًا التابع exit: ينهي المهمة الفرعية قيد التشغيل حاليًا، ويُجدوِل ...
التابع Thread.handle_interrupt في روبي
يغير التابع handle_interrupt توقيت المقاطعة غير المتزامنة (asynchronous interrupt timing). المقاطعة (interrupt) يعني الحدث غير المتزامن (asynchronous event) والإجراء المقابل raise و kill وإشارة المسك (signal trap، غير مدعومة حاليًا) وعملية إنهاء المهمة الفرعية الرئيسية (عند إنهاء المهمة الفرعية الرئيسية، فسيتم إنهاء كل المهام الفرعية الأخرى). البنية العامة handle_interrupt(hash) { ... } → result of the block
يحتوي المعامل hash المعطى على أزواج على شاكلة ExceptionClass => :TimingSymbol إذ ExceptionClass هو مقاطعة (interrupt) المٌعالج من قبل الكتلة المعطاة. أما TimingSymbol فيمكن أن يكون ...
تابع النسخة Thread.abort_on_exception= في روبي
يضبط التابع abort_on_exception عند استدعائه بالشكل abort_on_exception= boolean حالة الشرط المحلي "المقاطعة عند حدوث استثناء؟" (abort on exception) إلى القيمة المنطقية boolean. فعندما تكون القيمة المنطقية هي true وإذا تم إيقاف هذه المهمة الفرعية بواسطة استثناء، فسيطلق ذلك الاستثناء مجددًا في المهمة الفرعية الرئيسية. يوجد أيضًا تابع صنف (class method) لتعيين هذا الخيار لكل المهام الفرعية، راجع الصفحة abort_on_exception=. البنية العامة abort_on_exception= boolean→ true or false
القيمة المعادة تعاد القيمة المنطقية boolean بعد تعيينها إلى حالة الشرط المحلي "المقاطعة عند حدوث استثناء؟" (abort on ...
التابع Regexp.last_match في روبي
يُعيد التابع last_match إن لم يمرَّر إليه أي شيء كائنًا من النوع MatchData الذي تم إنشاؤه من آخر تطابق (match) ناجح للنمط. وهو مكافئ لقراءة المتغير العام $~ (راجع قسم المتغيرات العامة المخصصة في صفحة Regexp لمزيد من التفاصيل). أمَّا إن مرِّر إلى التابع last_match عدد n، فسيعيد المطابقة ذات الرقم n في الكائن MatchData. يمكن أن يكون n عبارة عن سلسلة نصية أو رمزًا للإشارة إلى الالتقاط المسمى (named capture). لاحظ أن last_match هو متغير محلي في مدى (scope) التابع ...
التابع Marshal.dump في روبي
يُسلسل (Serializes) التابع dump الكائن المعطى وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن من النوع IO، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية. البنية العامة dump( obj [, anIO] , limit=-1 ) → anIO
في حال تمرير المعامل limit، فسيقتصر التابع dump على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان limit سالبًا، لن يكون هناك أي تحقق من للعمق. لا يمكن للتابع Marshal تفريغ (dump) الكائنات التالية: الوحدات أو الأصناف المجهولة (anonymous Class/Module). الكائنات المرتبطة بالنظام (مثل ...
التابع Thread.report_on_exception في روبي
يعيد التابع report_on_exception حالة "التبليغ عند الاستثناء" (report on exception). القيمة الافتراضية هي true منذ روبي 2.5. كل المهام الفرعية التي يتم إنشاؤها عندما تكون قيمة هذه الراية مساوية للقيمة true ستبعث رسالة إلى المجرى stderr$ إذا أنهى استثناء ما هذه المهمة الفرعية. يُستخدَم هذا التابع لإمساك الأخطاء في المهمة الفرعية في وقت مبكر. لكن في بعض الحالات، قد لا ترغب في هذه المخرجات. هناك عدة طرق لتجنب المخرجات الزائدة: إذا لم يكن الاستثناء مقصودًا، فأفضل خيار أمامك هو إصلاح سبب ...
الصنف Continuation في روبي
تُولّد الكائنات Continuation بواسطة التابع Kernel.callcc بعد استيراد continuation عبر require. تحمل هذه الكائنات عنوان العودة (return address) وسياق التنفيذ (execution context)، مما يتيح العودة إلى نهاية الكتلة callcc من أي مكان في البرنامج. كائنات الصنف Continuation مشابهة لحد ما البنية setjmp/longjmp في لغة C (على الرغم من أنَّها تحتوي على حالات أكثر، لذلك يمكن اعتبارها أقرب إلى المهام الفرعية [threads]). على سبيل المثال: require "continuation"
arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
callcc{|cc| $cc = cc}
puts(message = arr.shift)
$cc.call unless message ...
التابع sleep الخاص بالصنف Kernel في روبي
يعلّق التابع sleep المهمة الفرعية (thread) الحالية لعدد محدَّد من الثواني ثم يعيد عدد الثواني الفعلية (بعد تقريبه) الذي توقفت فيها المهمة الفرعية، والذي قد يكون أقل من العدد المطلوب إن استدعت مهمة فرعية أخرى التابع Thread.run. وفي حال استدعاء التابع sleep دون تمرير أي شيء إليه، فسيرسل المهمة الفرعية إلى النوم بشكل دائم. البنية العامة sleep([duration]) → integer
المعاملات duration مدة تعليق المهمة الفرعية. قد يكون أي نوع عددي، بما في ذلك الأعداد العشري التي من النوع Float. القيمة ...
التابع caller_locations الخاص بالصنف Kernel في روبي
يعيد التابع caller_locations مكدس التنفيذ (execution stack) الحالي كمصفوفة تحتوي كائنات تعقب عكسي (backtrace location objects). انظر صفحة Thread::Backtrace::Location لمزيد من المعلومات. البنية العامة caller_locations(start=1, length=nil) → array or nil
caller_locations(range)→ array or nil
يحدد الوسيط الاختياري start عدد مدخلات المكدس الأولية التي ستُحذف من أعلى المكدس. ويمكن استخدام الوسيط length اختياري ثاني لتحديد عدد المدخلات التي ستُعاد من المكدس. يعيد التابع القيمة nil إن كان الوسيط start أكبر من حجم مكدس التنفيذ الحالي. اختياريًا، يمكنك تمرير مجال range، والذي سيؤدي إلى ...
التابع fork الخاص بالصنف Kernel في روبي
ينشئ التابع fork عملية فرعية (subprocess). في حال تمرير كتلة، فستُنفّذ تلك الكتلة في العملية الفرعية، كما أن قيمة حالة الخروج عند الانتهاء ستساوي الصفر. خلا ذلك، سيعيد التابع fork مرتين؛ مرةً في العملية الأب (parent process)، حيث يعيد معرف العملية (pid) الفرعية، ومرة في العملية الفرعية، حيث يعيد nil. يمكن للعملية الفرعية الخروج باستخدام exit! لتجنب تشغيل دوال التابع at_exit. يجب أن تستخدم العملية الأب التابع Process.wait لتجميع حالات إنهاء عملياتها الفرعية، أو تستخدم Process.detach لتسجيل إهمال تلك الحالات؛ خلاف ...
الصنف Fiber في روبي
الألياف (Fibers) هي حقولٌ أساسيّةٌ (primitives) تُستخدم في تنفيذ تعدّد المهام التشاركي (cooperative concurrency) للمهام الخفيفة (light weight) أي التي تستهلك جزءًا صغيرًا من الذاكرة. تعني أساسيًّا إنشاء كتل شيفرات يمكن إيقافها مؤقتًا واستئنافها، كما هو الحال مع الخيوط (threads). الفرق الأساسي في الألياف أنه لا يمكن إيقافها مؤقّتًا من قبل مهام أخرى تنفذ من قبل النظام (Preemption) وأن الجدولة (scheduling) يجب أن تتمَّ من قبل المبرمج وليس من قبل الآلة الافتراضية (virtual machine). على عكس نماذج تعدد المهام التشاركية ...
الصنف Exception في روبي
تُستخدَم الكائنات السليلة من الصنف Exception للتواصل بين التّابع Kernel.raise وتصريحات rescue في الكتل (blocks) من الشكل begin...end. تَحمل كائنات الصنف Exception معلوماتٍ عن الاستثناء المَرمي مثل نوعه (اسم صنف الاستثناء)، وسلسلةً نصيّةً وصفيّةً اختياريّة، ومعلوماتِ تتبّعٍ اختيارية. قد تضيف الأصناف الفرعية من الصنف Exception معلوماتٍ إضافيّةٍ مثل NameError.name. قد تُنشِئ البرامج أصنافًا فرعيّةً (subclasses) من الصنف Exception، تكون عادةً StandardError أو RuntimeError، لتوفير أصنافٍ مخصصّةٍ وإضافة معلوماتٍ إضافية. ألقِ نظرةً على قائمة الأصناف الفرعية في الأسفل من أجل قيم ...
تنقيح تطبيقات ريلز
يقدّم هذا الدليل التقنيات اللازمة لتنقيح تطبيقات ريلز. بعد قراءة هذا الدليل، ستتعلّم: الغرض من التنقيح. كيفة تتبّع العلل والأخطاء التي لا تتعرّف عليها الاختبارات في تطبيقك. طرقًا مختلفة للتنقيح. كيفيّة تحليل أثر المكدس. مساعدي العرض للتنقيح احدى المهام الشائعة في التنقيح هي فحص محتويات متغيّر معيّن، لذا يوفر ريلز ثلاثة طرائق لفعل ذلك: Debug To_yaml Inspect debug سيعيد المساعد debug الوسم <pre> الذي يصدّر الكائن باستخدام تنسيق YAML، وسيؤدي هذا إلى توليد بيانات يمكن للإنسان قراءتها من أي كائن. ...
عملية تهيئة ريلز
يشرح هذا الدليل العمل الداخلي لعملية التهيئة في ريلز. وهو دليل متعمق للغاية وموصى به لمطوري ريلز المتقدمّين. ستتعلم بعد قراءة هذا الدليل: كيفيّة استخدام خادم ريلز (rails server). التسلسل الزمني لتهيئة ريلز. أين تُطلَب الملفّات المختلفة أثناء تسلسل التمهيد. كيفيّة تعريف واجهة Rails::Server واستخدامها. يتضمّن هذا الدليل كل استدعاء لتابع مطلوب لتشغيل مكّدس Ruby on Rails (أي stack) لتطبيق ريلز افتراضي، مع شرح كل جزء بالتفصيل. بالنسبة لهذا الدليل، سنركّز على ما يحدث عند تنفيذ rails server لبدء إقلاع ...
التجزئة (Hashing) في Laravel
مقدمة تقدم واجهة التجزئة الخاصة بإطار Laravel تجزئة Bcrypt و Argon2 آمنة لتخزين كلمات مرور المستخدم. إذا كنت تستخدم الصنفين الداخليين (Built-in classes) LoginController و RegisterController المتضمنين مع تطبيق Laravel الخاص بك، فإنهما يستخدمان Bcrypt للتسجيل والاستيثاق تلقائيًا. ملاحظة: يعدّ Bcrypt خيارًا رائعًا لتجزئة كلمات المرور لأن "عامل العمل" الخاص به قابل للتعديل، مما يعني أنه يمكن زيادة الوقت المستغرق لإنشاء تجزئة كلما زادت طاقة المعدات. الضبط يُضبط محرك تشغيل التجزئة التلقائي الخاص بتطبيقك في ملف الإعدادات config/hashing.php. يوجد حاليا ...
Document.queryCommandEnabled()
يشير التّابع Document.queryCommandEnabled() إلى ما إذا كان أمر التّحرير المعطى مفعّلًا من طرف المتصفّح أم لا. البنية العامة isEnabled = document.queryCommandEnabled(command);
command الأمر المرغوب التّعرّف على ما إذا كان مدعومًا أو لا. القيمة المعادة قيمة منطقيّة من النّوع Boolean تكون true إن كان الأمر مُفعّلًا وتكون false إن لم يكن كذلك. مثال var flg = document.queryCommandEnabled("SelectAll");
if(flg) {
document.execCommand("SelectAll", false, null); // الأمر مُفعّل، لذا نفّذه
}
ملاحظات بالنّسبة للأمران 'cut' و'copy' فإنّ التّابع يعيد القيمة true فقط إن استدعيَ في ...
الدالة register_tick_function() في PHP
(PHP 4 >= 4.0.3, PHP 5, PHP 7) تُسجّل الدالة register_tick_function() دالة لتُنفّذ عند كل tick المقصود بـ tick هو حدث يقع لكل عدد (N) من العبارات التي يمكن تطبيق هذا الموجه عليها. الوصف bool register_tick_function ( callable $function [, mixed $arg [, mixed $... ]] )
تُسجّل الدالة register_tick_function() الدالة الممرّرة إليها في المعامل function لتُننفّذ عند استدعاء tick . المعاملات function سلسلة نصية تُمثِّل اسم الدالة، أو مصفوفة متضمنة كائن ودالة تابعة لصنف. arg ... القيم المعادة تعيد الدالة ...
الصنف Kernel في روبي
تُضمَّن الوحدة Kernel من طرف الصنف Object، لذلك فتوابعها متاحة في كل كائنات روبي. توابع نسخ الصنف Kernel مُوثّقة في صفحة الصنف Object، أما توابع الوحدة Kernel فهي مُوثقة هنا. تستدعى هذه التوابع بدون مستقبل (receiver)، وبالتالي يمكن استدعاؤها وفق الشكل الدالي: sprintf "%.1f", 1.234 #=> "1.2"
توابع الصنف العامة (Public Class Methods) Array يعيد المعامل الممرَّر إليه على شكل مصفوفة (Array). Complex يعيد ناتج التعبير x + i * y؛ حيث i هو الوحدة التخيلية للعدد العقدي. Float Hash يعيد ناتج التعبير x + ...
الدالة String.offsetByCodePoints() في Kotlin
تعيد الدالة offsetByCodePoints() فهرس المحرف الموجود في السلسلة النصية التي استٌدعيت معها والذي ينزاح بمقدار محدد بدءًا من عنصر ذي فهرس محدد. البنية العامة inline fun String.offsetByCodePoints(
index: Int,
codePointOffset: Int
): Int
منصة التشغيل المطلوبة: JVM. وجود الكلمة المفتاحية inline يدل على أن هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة الدوال المباشرة (inline functions)). المعاملات index عدد صحيح يمثل فهرس العنصر الذي ستبدأ عنده عملية الإزاحة. codePointOffset عدد صحيح يمثل مقدار الإزاحة. القيم المعادة عدد من ...
الدالة CharSequence.repeat() في Kotlin
تكرِّر الدالة repeat() سلسلة المحارف التي استٌدعيت معها عددًا محددًا من المرات. البنية العامة actual fun CharSequence.repeat(n: Int): String
المعاملات n عدد صحيح يمثل عدد مرات تكرار سلسلة المحارف المعطاة. إن أعطيت قيمة سالبة لهذا المعامل، فسيُطلَق الاستثناء IllegalArgumentException. القيم المعادة تعاد سلسلة من المحارف تحوي جميع محارف السلسلة المعطاة بعد تكرارها n مرة. أمثلة مثالٌ على استعمال الدالة ()repeat: fun main(args: Array<String>) {
println("Word".repeat(4)) // WordWordWordWord
println("Word".repeat(0)) //
}
مثالٌ آخر على استعمال الدالة ()repeat ...
الدالة requireNoNulls() في Kotlin
تعيد الدالة requireNoNulls() العناصر غير المعدومة (non-null) من المصفوفة أو المجموعة أو القائمة التي استُدعيت معها أو ترمي استثناءً إن وجد عنصر معدوم (null). البنية العامة fun <T : Any> Array<T?>.requireNoNulls(): Array<T>
fun <T : Any> Iterable<T?>.requireNoNulls(): Iterable<T>
fun <T : Any> List<T?>.requireNoNulls(): List<T>
القيم المعادة تعاد المصفوفة أو المجموعة أو القائمة المعطاة نفسها إن لم يكن فيها أي عنصر معدوم أو يرمى الاستثناء IllegalArgumentException إن وجد أي عنصر معدوم. أمثلة استعمال الدالة ()requireNoNulls مع قائمة لا تحتوي على أي عنصر معدوم: fun ...
معلومات إضافية عن روبي
هل تساءلت يومًا لماذا روبي مشهورة إلى هذا الحد؟ يقول المعجبون بها أنَّها لغة جميلة وذات بنية متقنة. ويقولون أيضًا أنَّها لغة عملية وسهلة الاستعمال. فماذا تعطي وبماذا تتمتع؟ مثالية منشئ لغة روبي حققت لغة روبي توازنًا دقيقًا بين لغات البرمجة. عمل منشئ هذا اللغة - الياباني Yukihiro “Matz” Matsumoto - على دمج أجزاءٍ من لغات البرمجة المفضلة لديه (Perl، و Smalltalk، و Eiffel، و Ada، و Lisp) لإنشاء لغة جديدة تحقق التوازن بين البرمجة الوظيفية (functional programming) والبرمجة الأمرية ...
التابع Thread.keys في روبي
يُعيد التابع keys مصفوفة من أسماء المتغيرات محلية الليف (fiber-local variables) على هيئة رموز. البنية العامة keys→ array
القيمة المعادة تعاد مصفوفة من أسماء المتغيرات محلية الليف. أمثلة مثال على استخدام التابع keys: thr = Thread.new do
Thread.current[:cat] = 'meow'
Thread.current["dog"] = 'woof'
end
thr.join #=> #<Thread:0x401b3f10 dead>
thr.keys #=> [:dog, :cat]
انظر أيضًا التابع key?: يتحقق إن كانت السلسلة النصية أو الرمز المعطى موجود على هيئة متغير محلي الليف (fiber-local variable). مصادر قسم التابع keys في الصنف Thread ...
التابع Thread.name في روبي
يعيد التابع name اسم المهمة الفرعية. البنية العامة name→ string
القيمة المعادة تعاد سلسلة نصية تمثِّل اسم المهمة الفرعية. انظر أيضا التابع name=: يعين اسم معين لمهمة فرعية في روبي مصادر قسم التابع name في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.value في روبي
ينتظر التابع value اكتمال المهمة الفرعية، باستخدام التابع join ثم يُعيد قيمتها، أو يطلق الاستثناء الذي أنهى المهمة الفرعية. البنية العامة value→ obj
القيمة المعادة تعاد القيمة المعادة من المهمة الفرعية أو يطلق الاستثناء الذي أنهى المهمة الفرعية. أمثلة مثال على استخدام التابع value: a = Thread.new { 2 + 2 }
a.value #=> 4
b = Thread.new { raise 'something went wrong' }
b.value #=> RuntimeError: something went wrong
انظر أيضًا التابع to_s: يضع اسم ومعرِّف وحالة المهمة الفرعية في ...
التابع Thread.to_s في روبي
يعيد التابع to_s اسم ومعرِّف وحالة مهمة فرعية على هيئة سلسلة نصية. البنية العامة to_s → string
القيمة المعادة يعاد اسم ومعرِّف وحالة المهمة الفرعية على هيئة سلسلة نصية. انظر أيضًا التابع value: ينتظر اكتمال المهمة الفرعية باستخدام join، ثم يُعيد قيمتها. مصادر قسم التابع to_s في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.pending_interrupt? في روبي
يتحقق التابع pending_interrupt? مما إذا كان طابور الانتظار غير المتزامن (asynchronous queue) فارغًا أم لا. بما أنه يمكن استخدام handle_interrupt لتأجيل الأحداث غير المتزامنة، فمن الممكن استخدام هذا التابع للتحقق مما إذا كانت هناك أي أحداث مؤجلة. إن أعاد هذا التابع القيمة true، فيمكنك إنهاء كتل :never. إذا مُرِّر نوع الخطأ إلى التابع، فسيتحقق فقط من الأحداث المؤجلة من النوع error. الاستخدام اطلع على المثال التالي: th = Thread.new{
Thread.handle_interrupt(RuntimeError => :on_blocking){
while true
...
التابع Thread.alive? في روبي
يتحقق التابع alive? إن كانت المهمة الفرعية التي استُدعي معها قيد التشغيل أو نائمة. البنية العامة alive?→ true or false
القيمة المعادة تعاد القيمة true إن كانت المهمة الفرعية المعطاة قيد التشغيل أو نائمة، وإلا فستعاد القيمة false. أمثلة مثال على استخدام التابع alive?: thr = Thread.new { }
thr.join #=> #<Thread:0x401b3fb0 dead>
Thread.current.alive? #=> true
thr.alive? ...
التابع Thread.stop? في روبي
يتحقق التابع stop? إن كانت المهمة الفرعية ميتة أو نائمة. البنية العامة stop?→ true or false
القيمة المعادة تعاد القيمة true إن كانت المهمة الفرعية ميتة أو نائمة. خلا ذلك، تعاد القيمة false. أمثلة مثال على استخدام التابع stop?: a = Thread.new { Thread.stop }
b = Thread.current
a.stop? #=> true
b.stop? #=> false
انظر أيضًا التابع alive?: يتحقق إن كانت المهمة الفرعية التي استُدعي معها قيد التشغيل أو نائمة. التابع status: يُعيد حالة المهمة الفرعية. مصادر قسم التابع stop? في الصنف Thread في ...
التابع Thread.run في روبي
يوقظ التابع run المهمة الفرعية، ويجعلها متاحة للجدولة. انظر أيضًا صفحة تابع النسخة wakeup. البنية العامة run→ thr
القيمة المعادة تعاد المهمة الفرعية المعطاة. أمثلة مثال على استخدام التابع run: a = Thread.new { puts "a"; Thread.stop; puts "c" }
sleep 0.1 while a.status!='sleep'
puts "Got here"
a.run
a.join
هذا سوف ينتج: a
Got here
c
انظر أيضًا التابع wakeup:يجعل المهمة الفرعية متاحة للجدولة، ولكن قد تظل معطلة في مجرى الدخل/الخرج (I/O). مصادر قسم التابع run في الصنف Thread في توثيق روبي الرسمي.11
التابع Thread.set_trace_func في روبي
يجعل التابع set_trace_func الكائن proc معالجًا للتعقب (handler for tracing) في المهمة الفرعية، أو يعطل التعقب إن كان مُرِّرت القيمة nil بدلًا من ذلك الكائن. البنية العامة set_trace_func(proc) → proc
set_trace_func(nil) → nil
المعاملات proc كائن من النوع Proc. القيمة المعادة يعاد كائنٌ من النوع Proc. انظر أيضًا التابع Kernel.set_trace_func: يجعل المعامل المعطى كمعالج للتعقب، أو يعطل التعقب إن كان الوسيط يساوي nil. الصنف Proc. مصادر قسم التابع set_trace_func في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.wakeup في روبي
يوقظ التابع wakeup مهمة فرعية ويجعلها متاحة للجدولة، ولكن قد تظل معطلة في مجرى الإدخال/الإخراج (I/O). ملحوظة: هذا التابع لا يستدعي المُجدوِل (scheduler)؛ راجع صفحة التابع run لمزيد من المعلومات. البنية العامة wakeup→ thr
القيمة المعادة تعاد المهمة الفرعية بعد إيقاظها. أمثلة مثال على استخدام التابع wakeup: c = Thread.new { Thread.stop; puts "hey!" }
sleep 0.1 while c.status!='sleep'
c.wakeup
c.join
#=> "hey!"
انظر أيضًا التابع run: يوقظ المهمة الفرعية، ويجعلها متاحة للجدولة. مصادر قسم التابع Threadwakeup في الصنف Thread في توثيق روبي الرسمي.
التابع Thread.list في روبي
يُعيد التابع list مصفوفة تضم المهام الفرعية العاملة أو المتوقفة. البنية العامة list→ array
القيمة المعادة تعاد مصفوفة تضم المهام الفرعية المشتغلة أو المتوقفة. أمثلة مثال على استخدام التابع list: Thread.new { sleep(200) }
Thread.new { 1000000.times {|i| i*i } }
Thread.new { Thread.stop }
Thread.list.each {|t| p t}
الناتج: #<Thread:0x401b3e84 sleep>
#<Thread:0x401b3f38 run>
#<Thread:0x401b3fb0 sleep>
#<Thread:0x401bdf4c run>
انظر أيضًا التابع main: يُعيد المهمة الفرعية الرئيسية. مصادر قسم التابع list في الصنف Thread في توثيق روبي الرسمي.
عرض (500 السابقة | 500 التالية) (20 | 50 | 100 | 250 | 500).