pthread_cleanup_push_defer_np(3)

الاسم
pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np - دفع وسحب معالجات التنظيف لإلغاء الخيط مع حفظ نوع قابلية الإلغاء

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

موجز
#include <pthread.h>

void pthread_cleanup_push_defer_np(typeof(void (void *)) *routine,
                                   void *arg);
void pthread_cleanup_pop_restore_np(int execute);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

pthread_cleanup_push_defer_np(), pthread_cleanup_pop_defer_np():
    _GNU_SOURCE

الوصف
هذه الدوال مماثلة لـ pthread_cleanup_push(3) و pthread_cleanup_pop(3)، باستثناء الاختلافات المذكورة في هذه الصفحة.

مثل pthread_cleanup_push(3)، تدفع pthread_cleanup_push_defer_np() الروتين routine إلى مكدس معالجات التنظيف للإلغاء الخاص بالخيط. بالإضافة إلى ذلك، تحفظ أيضًا نوع قابلية الإلغاء الحالي للخيط، وتضبط نوع قابلية الإلغاء إلى "مؤجل" (انظر pthread_setcanceltype(3))؛ يضمن هذا حدوث تنظيف الإلغاء حتى لو كان نوع قابلية الإلغاء للخيط "غير متزامن" قبل الاستدعاء.

مثل pthread_cleanup_pop(3)، تسحب pthread_cleanup_pop_restore_np() معالج التنظيف العلوي من مكدس معالجات التنظيف للإلغاء الخاص بالخيط. بالإضافة إلى ذلك، تستعيد نوع قابلية الإلغاء للخيط إلى قيمته في وقت pthread_cleanup_push_defer_np() المطابقة.

يجب على المستدعي ضمان إقران استدعاءات هذه الدوال داخل نفس الدالة، وعلى نفس مستوى التداخل المعجمي. تنطبق قيود أخرى، كما هو موصوف في pthread_cleanup_push(3).

هذا التسلسل من الاستدعاءات:

    pthread_cleanup_push_defer_np(routine, arg);
    pthread_cleanup_pop_restore_np(execute);

مكافئ لـ (لكنه أقصر وأكثر كفاءة من):

    int oldtype;

    pthread_cleanup_push(routine, arg);
    pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
    ...
    pthread_setcanceltype(oldtype, NULL);
    pthread_cleanup_pop(execute);

المعايير
جنو؛ ومن هنا جاءت اللاحقة "_np" (غير منقول) في الأسماء.

التاريخ
glibc 2.0

انظر أيضًا
pthread_cancel(3), pthread_cleanup_push(3), pthread_setcancelstate(3), pthread_testcancel(3), pthreads(7)

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

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

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