الاسم
- Provided by: manpages-ar-dev (Version: 4.31.0-1)
- Source: manpages-l10n
- Report a bug
مكتبة مسالك POSIX (libpthread، -lpthread)
#define _GNU_SOURCE /* انظر feature_test_macros(7) */ #include <pthread.h>
int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize,
const cpu_set_t *cpuset);
int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize,
cpu_set_t *cpuset);
تضبط الدالة pthread_setaffinity_np() قناع تقارب وحدة المعالجة المركزية للخيط thread إلى مجموعة وحدة المعالجة المركزية المشار إليها بواسطة cpuset. إذا نجحت الاستدعاء، ولم يكن الخيط يعمل حاليًا على إحدى وحدات المعالجة المركزية في cpuset، فسيُهاجر إلى إحدى تلك الوحدات.
تُرجع الدالة pthread_getaffinity_np() قناع تقارب وحدة المعالجة المركزية للخيط thread في المخزن المؤقت المشار إليه بواسطة cpuset.
لمزيد من التفاصيل حول أقنعة تقارب المعالج (CPU affinity masks)، راجع sched_setaffinity(2). لوصف لمجموعة من الماكرو التي يمكن استخدامها لمعالجة وفحص مجموعات المعالجات، راجع CPU_SET(3).
الوسيطة cpusetsize هي طول (بالبايت) المخزن المؤقت المشار إليه بواسطة cpuset. عادةً، تُحدد هذه الوسيطة كـ sizeof(cpu_set_t). (قد تكون قيمة أخرى، إذا استُخدمت وحدات الماكرو الموصوفة في CPU_SET(3) للتخصيص الديناميكي لمجموعة وحدة المعالجة المركزية.)
عند النجاح، تُعيد هذه الدوال القيمة 0؛ وعند الخطأ، تُعيد رقم خطأ غير صفري.
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| pthread_setaffinity_np(), pthread_getaffinity_np() | سلامة الخيوط | MT-Safe |
جنو؛ ومن هنا جاءت اللاحقة "_np" (غير منقول) في الأسماء.
glibc 2.3.4.
في إصدار glibc 2.3.3 فقط، توفرت نسخ من هذه الدوال لم تكن تحتوي على معطى cpusetsize. بدلاً من ذلك، كان حجم مجموعة وحدة المعالجة المركزية المعطى لنداءات النظام الأساسية هو دائماً sizeof(cpu_set_t).
بعد استدعاء pthread_setaffinity_np()، تكون مجموعة وحدات المعالجة المركزية التي سيعمل عليها الخيط فعليًا هي تقاطع المجموعة المحددة في الوسيطة cpuset ومجموعة وحدات المعالجة المركزية الموجودة فعليًا على النظام. قد يُقيد النظام أيضًا مجموعة وحدات المعالجة المركزية التي يعمل عليها الخيط إذا استُخدمت آلية "cpuset" الموصوفة في cpuset(7). تُفرض هذه القيود على المجموعة الفعلية لوحدات المعالجة المركزية التي سيعمل عليها الخيط بصمت من النواة.
تُنفذ هذه الدوال فوق استدعاءات النظام sched_setaffinity(2) و sched_getaffinity(2).
يرث خيط جديد مُنشأ بواسطة pthread_create(3) نسخة من قناع تقارب وحدة المعالجة المركزية لمنشئه.
في البرنامج التالي، يستخدم الخيط الرئيسي pthread_setaffinity_np() لضبط قناع تقارب وحدة المعالجة المركزية ليشمل وحدات المعالجة المركزية 0 إلى 7 (قد لا تكون جميعها متاحة على النظام)، ثم يستدعي pthread_getaffinity_np() للتحقق من قناع تقارب وحدة المعالجة المركزية الناتج للخيط.
#define _GNU_SOURCE
#include <err.h>
#include <pthread.h>
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int s;
cpu_set_t cpuset;
pthread_t thread;
thread = pthread_self();
/* Set affinity mask to include CPUs 0 to 7. */
CPU_ZERO(&cpuset);
for (size_t j = 0; j < 8; j++)
CPU_SET(j, &cpuset);
s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_setaffinity_np");
/* Check the actual affinity mask assigned to the thread. */
s = pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_getaffinity_np");
printf("Set returned by pthread_getaffinity_np() contained:\n");
for (size_t j = 0; j < CPU_SETSIZE; j++)
if (CPU_ISSET(j, &cpuset))
printf(" CPU %zu\n", j);
exit(EXIT_SUCCESS);
}
sched_setaffinity(2), CPU_SET(3), pthread_attr_setaffinity_np(3), pthread_self(3), sched_getcpu(3), cpuset(7), pthreads(7), sched(7)
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.