التابع join
الخاص بالصنف Thread
في روبي
عند استدعاء التابع join
، فسيتوقف تنفيذ المهمة الفرعية المُستدعية (calling thread)، وسيقوم بتنفيذ المهمة الفرعية التي استُدعي معها thr
.
ولن يعود حتى يخرج thr
، أو حتى تمر limit
ثانية (انظر فقرة البنية العامة).
في حالة انتهاء المهلة الزمنية، سيُعاد nil
، خلا ذلك، سيُعاد thr
.
سيتم إنهاء كل المهمة الفرعية غير المضمومة (joined) عندما يخرج البرنامج الرئيسي.
إن أطلق المهمة الفرعية سابقا استثناء thr
، ولم يتم تعيين الرايتين ::abort_on_exception
أو $DEBUG (أي أنه لم تتم معالجة الاستثناء بعد) ، فستتم معالجته في هذا الوقت.
يوضح المثال التالي الوسيط limit
.
هذا سوف ينتج:
tick...
Waiting
tick...
Waiting
tick...
tick...
البنية العامة
join → thr
join(limit)→ thr
المعاملات
limit
القيمة المُعادة
أمثلة
مثال على استخدام التابع join
:
a = Thread.new { print "a"; sleep(10); print "b"; print "c" }
x = Thread.new { print "x"; Thread.pass; print "y"; print "z" }
x.join # Let thread x finish, thread a will be killed on exit.
#=> "axyz"
انظر أيضا
- التابع
inspect
: - التابع
key?
: يُعيد التابعkey?
القيمةtrue
إن كانت السلسلة النصية أو الرمز المعطى (انظر فقرة البنية العامة) موجودة على هيئة متغير محلي الليف.