sem_init(3)

الاسم
sem_init - تهيئة كمية إشارة غير مسماة

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

موجز
#include <semaphore.h>

int sem_init(sem_t *sem, int pshared, unsigned int value);

الوصف
تهيئ sem_init() كمية الإشارة غير المسماة في العنوان المشار إليه بواسطة sem. تحدد وسيطة value القيمة المبدئية لكمية الإشارة.

تشير وسيطة pshared إلى ما إذا كانت كمية الإشارة هذه ستُشارك بين خيوط عملية، أو بين عمليات.

إذا كانت قيمة pshared هي 0، فتُشارك كمية الإشارة بين خيوط عملية، ويجب أن تكون موجودة في عنوان ما مرئي لجميع الخيوط (مثل، متغير عام، أو متغير مُخصص ديناميكيًا على الكومة).

إذا كانت قيمة pshared غير صفرية، فتُشارك كمية الإشارة بين العمليات، ويجب أن تكون موجودة في منطقة من الذاكرة المشتركة (انظر shm_open(3)، mmap(2)، و shmget(2)). (بما أن الطفل المُنشأ بواسطة fork(2) يرث تعيينات الذاكرة من والده، يمكنه أيضًا الوصول إلى كمية الإشارة.) يمكن لأي عملية يمكنها الوصول إلى منطقة الذاكرة المشتركة أن تعمل على كمية الإشارة باستخدام sem_post(3)، sem_wait(3)، وهكذا.

تهيئة كمية إشارة سبق تهيئتها تؤدي إلى سلوك غير محدد.

قيمة الإرجاع
تُرجع sem_init() 0 عند النجاح؛ عند الخطأ، يُرجع -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EINVAL
    تتجاوز value قيمة SEM_VALUE_MAX.

ENOSYS
    قيمة pshared غير صفرية، لكن النظام لا يدعم كميات الإشارة المشتركة بين العمليات (انظر sem_overview(7)).

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

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

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

بشكل غريب، لا يحدد POSIX.1-2001 القيمة التي يجب أن تُرجعها استدعاء ناجح لـ sem_init(). يُصحح POSIX.1-2008 هذا، محددًا إرجاع الصفر عند النجاح.

أمثلة
انظر shm_open(3) و sem_wait(3).

انظر أيضًا
sem_destroy(3)، sem_post(3)، sem_wait(3)، sem_overview(7)

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

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

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