pthread_join(3)

الاسم
pthread_join - الانضمام إلى خيط منتهٍ

المكتبة
مكتبة مسالك POSIX (libpthread، -lpthread)

موجز
#include <pthread.h>

int pthread_join(pthread_t thread, void **retval);

الوصف
تنتظر الدالة pthread_join() انتهاء الخيط المُحدد بواسطة thread. إذا كان هذا الخيط قد انتهى بالفعل، فستُرجع pthread_join() فورًا. يجب أن يكون الخيط المُحدد بواسطة thread قابلًا للانضمام.

إذا لم يكن retval NULL، فستنسخ pthread_join() حالة الخروج للخيط الهدف (أي القيمة التي قدمها الخيط الهدف إلى pthread_exit(3)) إلى الموقع المُشار إليه بواسطة retval. إذا أُلغي الخيط الهدف، فسيُوضع PTHREAD_CANCELED في الموقع المُشار إليه بواسطة retval.

إذا حاولت خيوط متعددة في وقت واحد الانضمام إلى نفس الخيط، فالنتائج غير مُحددة. إذا أُلغي الخيط الذي يستدعي pthread_join()، فسيظل الخيط الهدف قابلًا للانضمام (أي لن يُفصل).

قيمة الإرجاع
عند النجاح، تُرجع pthread_join() 0؛ عند الخطأ، تُرجع رقم خطأ.

الأخطاء

EDEADLK
    كُشف عن طريق مسدود (مثلًا، حاول خيطان الانضمام إلى بعضهما البعض)؛ أو يُحدد thread الخيط المُستدعي.

EINVAL
    thread ليس خيطًا قابلاً للضم.

EINVAL
    خيط آخر ينتظر بالفعل الانضمام إلى هذا الخيط.

ESRCH
    تعذر العثور على أي خيط بالمعرف thread.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
pthread_join() | سلامة الخيوط | MT-Safe

المعايير
POSIX.1-2008.

التاريخ
POSIX.1-2001.

ملاحظات
بعد استدعاء ناجح لـ pthread_join()، يُضمن للمُستدعي أن الخيط الهدف قد انتهى. قد يختار المُستدعي بعد ذلك القيام بأي تنظيف مطلوب بعد انتهاء الخيط (مثل تحرير الذاكرة أو الموارد الأخرى التي خُصصت للخيط الهدف).

الانضمام إلى خيط سبق الانضمام إليه يُنتج سلوكًا غير مُحدد.

الفشل في الانضمام إلى خيط قابل للانضمام (أي غير مفصول)، يُنتج "خيط زومبي". تجنب فعل هذا، لأن كل خيط زومبي يستهلك بعض موارد النظام، وعندما تتراكم خيوط زومبي كافية، لن يعود من الممكن إنشاء خيوط (أو عمليات) جديدة.

لا يوجد نظير pthreads لـ waitpid(-1, &status, 0)، أي "الانضمام إلى أي خيط منتهٍ". إذا كنت تعتقد أنك بحاجة لهذه الوظيفة، فربما تحتاج إلى إعادة التفكير في تصميم تطبيقك.

جميع الخيوط في العملية هي أقران: أي خيط يمكنه الانضمام إلى أي خيط آخر في العملية.

أمثلة
انظر pthread_create(3).

انظر أيضًا
pthread_cancel(3), pthread_create(3), pthread_detach(3), pthread_exit(3), pthread_tryjoin_np(3), pthreads(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.