Scroll to navigation

pthread_getattr_default_np(3) Library Functions Manual pthread_getattr_default_np(3)

الاسم

pthread_getattr_default_np, pthread_setattr_default_np, - الحصول على أو تعيين سمات إنشاء الخيط المبدئية

المكتبة

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

موجز

#define _GNU_SOURCE             /* انظر feature_test_macros(7) */
#include <pthread.h>
int pthread_getattr_default_np(pthread_attr_t *attr);
int pthread_setattr_default_np(const pthread_attr_t *attr);

الوصف

تضبط الدالة pthread_setattr_default_np() السمات المبدئية المستخدمة لإنشاء خيط جديد—أي السمات المستخدمة عند استدعاء pthread_create(3) بوسيطة ثانية قيمتها NULL. تُضبط السمات المبدئية باستخدام السمات المقدمة في *attr، وهو كائن سمات خيط مُهيأ مسبقًا. لاحظ التفاصيل التالية حول كائن السمات المقدم:

يجب أن تكون إعدادات السمات في الكائن صالحة.
يجب ألا تُضبط سمة عنوان المكدس في الكائن.
ضبط سمة حجم المكدس على الصفر يعني ترك حجم المكدس المبدئي دون تغيير.

تهيئ الدالة pthread_getattr_default_np() كائن سمات الخيط المشار إليه بـ attr بحيث يحتوي على السمات المبدئية المستخدمة لإنشاء الخيط.

الأخطاء

(pthread_setattr_default_np()) أحد إعدادات السمات في attr غير صالح، أو سمة عنوان المكدس مضبوطة في attr.
(pthread_setattr_default_np()) ذاكرة غير كافية.

السمات

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

الواجهة السمة القيمة
pthread_getattr_default_np(), pthread_setattr_default_np() سلامة الخيوط MT-Safe

المعايير

GNU؛ ومن هنا اللاحقة "_np" (غير محمولة) في أسمائها.

التاريخ

glibc 2.18.

أمثلة

يستخدم البرنامج أدناه pthread_getattr_default_np() لجلب سمات إنشاء الخيط المبدئية ثم يعرض إعدادات متنوعة من كائن سمات الخيط المُعاد. عند تشغيل البرنامج، نرى المخرجات التالية:


$ ./a.out;
Stack size:          8388608
Guard size:          4096
Scheduling policy:   SCHED_OTHER
Scheduling priority: 0
Detach state:        JOINABLE
Inherit scheduler:   INHERIT

مصدر البرنامج

#define _GNU_SOURCE
#include <err.h>
#include <pthread.h>
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
static void
display_pthread_attr(pthread_attr_t *attr)
{

int s;
size_t stacksize;
size_t guardsize;
int policy;
struct sched_param schedparam;
int detachstate;
int inheritsched;
s = pthread_attr_getstacksize(attr, &stacksize);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_attr_getstacksize");
printf("Stack size: %zu\n", stacksize);
s = pthread_attr_getguardsize(attr, &guardsize);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_attr_getguardsize");
printf("Guard size: %zu\n", guardsize);
s = pthread_attr_getschedpolicy(attr, &policy);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_attr_getschedpolicy");
printf("Scheduling policy: %s\n",
(policy == SCHED_FIFO) ? "SCHED_FIFO" :
(policy == SCHED_RR) ? "SCHED_RR" :
(policy == SCHED_OTHER) ? "SCHED_OTHER" : "[unknown]");
s = pthread_attr_getschedparam(attr, &schedparam);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_attr_getschedparam");
printf("Scheduling priority: %d\n", schedparam.sched_priority);
s = pthread_attr_getdetachstate(attr, &detachstate);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_attr_getdetachstate");
printf("Detach state: %s\n",
(detachstate == PTHREAD_CREATE_DETACHED) ? "DETACHED" :
(detachstate == PTHREAD_CREATE_JOINABLE) ? "JOINABLE" :
"???");
s = pthread_attr_getinheritsched(attr, &inheritsched);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_attr_getinheritsched");
printf("Inherit scheduler: %s\n",
(inheritsched == PTHREAD_INHERIT_SCHED) ? "INHERIT" :
(inheritsched == PTHREAD_EXPLICIT_SCHED) ? "EXPLICIT" :
"???"); } int main(void) {
int s;
pthread_attr_t attr;
s = pthread_getattr_default_np(&attr);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_getattr_default_np");
display_pthread_attr(&attr);
exit(EXIT_SUCCESS); }

انظر أيضًا

pthread_attr_getaffinity_np(3)، pthread_attr_getdetachstate(3)، pthread_attr_getguardsize(3)، pthread_attr_getinheritsched(3)، pthread_attr_getschedparam(3)، pthread_attr_getschedpolicy(3)، pthread_attr_getscope(3)، pthread_attr_getstack(3)، pthread_attr_getstackaddr(3)، pthread_attr_getstacksize(3)، pthread_attr_init(3)، pthread_create(3)، pthreads(7)

ترجمة

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

8 فبراير 2026 صفحات دليل لينكس (لم تصدر بعد)