الاسم
- Provided by: manpages-ar-dev (Version: 4.31.0-1)
- Source: manpages-l10n
- Report a bug
مكتبة مسالك POSIX (libpthread، -lpthread)
#include <pthread.h>
int pthread_spin_init(pthread_spinlock_t *lock, int pshared); int pthread_spin_destroy(pthread_spinlock_t *lock);
pthread_spin_init()، pthread_spin_destroy():
_POSIX_C_SOURCE >= 200112L
ملاحظة عامة: ينبغي لمعظم البرامج استخدام كواتح الاستبعاد المتبادل بدلاً من الأقفال الدورانية. الأقفال الدورانية مفيدة بشكل رئيسي بالاقتران مع سياسات جدولة الوقت الحقيقي. انظر الملاحظات.
تخصص دالة pthread_spin_init() أي موارد مطلوبة لاستخدام القفل الدوراني المشار إليه بواسطة lock وتهيئ القفل ليكون في حالة غير مقفلة. يجب أن تأخذ وسيطة pshared إحدى القيم التالية:
يؤدي استدعاء pthread_spin_init() على قفل دوراني تمت تهيئته بالفعل إلى سلوك غير محدد.
تدمر دالة pthread_spin_destroy() قفلاً دورانيًا تمت تهيئته سابقًا، محررة أي موارد خُصصت لذلك القفل. يؤدي تدمير قفل دوراني لم تتم تهيئته سابقًا أو تدمير قفل دوراني بينما يحمل خيط آخر القفل إلى سلوك غير محدد.
بمجرد تدمير قفل دوراني، يؤدي تنفيذ أي عملية على القفل غير إعادة تهيئته مرة أخرى باستخدام pthread_spin_init() إلى سلوك غير محدد.
نتيجة تنفيذ عمليات مثل pthread_spin_lock(3) وpthread_spin_unlock(3) وpthread_spin_destroy() على نسخ من الكائن المشار إليه بواسطة lock غير محددة.
عند النجاح، تُرجع هذه الدوال صفرًا. عند الفشل، تُرجع رقم خطأ. في حال فشل pthread_spin_init()، لا تتم تهيئة القفل.
قد تفشل pthread_spin_init() مع الأخطاء التالية:
POSIX.1-2008.
glibc 2.2. POSIX.1-2001.
دعم الأقفال الدورانية المشتركة بين العمليات هو خيار POSIX. هذا الخيار مدعوم في تنفيذ glibc.
ينبغي استخدام الأقفال الدورانية بالاقتران مع سياسات جدولة الوقت الحقيقي (SCHED_FIFO، أو ربما SCHED_RR). استخدام الأقفال الدورانية مع سياسات جدولة غير حتمية مثل SCHED_OTHER يشير غالبًا إلى خطأ في التصميم. المشكلة هي أنه إذا جُدول خيط يعمل تحت هذه السياسة خارج وحدة المعالجة المركزية بينما يحمل قفلاً دورانيًا، فإن خيوطًا أخرى ستضيع وقتًا في الدوران على القفل حتى يُعاد جدولة حامل القفل مرة أخرى ويُحرر القفل.
إذا أنشأت الخيوط حالة طريق مسدود أثناء استخدام الأقفال الدورانية، فإن تلك الخيوط ستدور إلى الأبد مستهلكة وقت وحدة المعالجة المركزية.
الأقفال الدورانية في مساحة المستخدم ليست قابلة للتطبيق كحل إقفال عام. هي، بحكم تعريفها، عرضة لانعكاس الأولوية وأوقات دوران غير محدودة. يجب على المبرمج الذي يستخدم الأقفال الدورانية أن يكون حريصًا بشكل استثنائي ليس فقط في الكود، ولكن أيضًا من حيث تكوين النظام ووضع الخيوط وتعيين الأولويات.
pthread_mutex_init(3)، pthread_mutex_lock(3)، pthread_spin_lock(3)، pthread_spin_unlock(3)، pthreads(7)
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.