- unstable 4.31.0-1
| pthread_getcpuclockid(3) | Library Functions Manual | pthread_getcpuclockid(3) |
الاسم¶
pthread_getcpuclockid - استرداد مُعرّف ساعة وقت وحدة المعالجة المركزية لخيط
المكتبة¶
مكتبة مسالك POSIX (libpthread، -lpthread)
موجز¶
#include <pthread.h> #include <time.h>
int pthread_getcpuclockid(pthread_t thread, clockid_t *clockid);
الوصف¶
تحصل الدالة pthread_getcpuclockid() على مُعرّف ساعة وقت وحدة المعالجة المركزية للخيط الذي يُعطى مُعرّفه في thread، وتُعيده في الموقع المُشار إليه بواسطة clockid.
قيمة الإرجاع¶
عند النجاح، تعيد هذه الدالة 0؛ وعند حدوث خطأ، تعيد رقم خطأ غير صفري.
الأخطاء¶
السمات¶
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| pthread_getcpuclockid() | سلامة الخيوط | MT-Safe |
المعايير¶
POSIX.1-2008.
التاريخ¶
glibc 2.2. POSIX.1-2001.
ملاحظات¶
عندما يُشير thread إلى الخيط المُستدعي، تُعيد هذه الدالة مُعرّفاً يُشير إلى نفس الساعة التي يُعالجها clock_gettime(2) و clock_settime(2) عند إعطاء مُعرّف الساعة CLOCK_THREAD_CPUTIME_ID.
أمثلة¶
يُنشئ البرنامج أدناه خيطاً ثم يستخدم clock_gettime(2) لاسترداد إجمالي وقت وحدة المعالجة المركزية للعملية، ووقت وحدة المعالجة المركزية لكل خيط المُستهلك من قبل الخيطين. تُظهر جلسة الصدفة التالية تشغيلاً مثالياً:
$ ./a.out; Main thread sleeping Subthread starting infinite loop Main thread consuming some CPU time... Process total CPU time: 1.368 Main thread CPU time: 0.376 Subthread CPU time: 0.992
مصدر البرنامج¶
/* Link with "-lrt" */
#include <err.h>
#include <errno.h>
#include <pthread.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
static void *
thread_start(void *arg)
{
printf("Subthread starting infinite loop\n");
for (;;)
continue;
}
static void
pclock(char *msg, clockid_t cid)
{
struct timespec ts;
printf("%s", msg);
if (clock_gettime(cid, &ts) == -1)
err(EXIT_FAILURE, "clock_gettime");
printf("%4jd.%03ld\n", (intmax_t) ts.tv_sec, ts.tv_nsec / 1000000);
}
int
main(void)
{
pthread_t thread;
clockid_t cid;
int s;
s = pthread_create(&thread, NULL, thread_start, NULL);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_create");
printf("Main thread sleeping\n");
sleep(1);
printf("Main thread consuming some CPU time...\n");
for (unsigned int j = 0; j < 2000000; j++)
getppid();
pclock("Process total CPU time: ", CLOCK_PROCESS_CPUTIME_ID);
s = pthread_getcpuclockid(pthread_self(), &cid);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_getcpuclockid");
pclock("Main thread CPU time: ", cid);
/* The preceding 4 lines of code could have been replaced by:
pclock("Main thread CPU time: ", CLOCK_THREAD_CPUTIME_ID); */
s = pthread_getcpuclockid(thread, &cid);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_getcpuclockid");
pclock("Subthread CPU time: 1 ", cid);
exit(EXIT_SUCCESS); /* Terminates both threads */
}
انظر أيضًا¶
clock_gettime(2), clock_settime(2), timer_create(2), clock_getcpuclockid(3), pthread_self(3), pthreads(7), time(7)
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 20 أغسطس 2025 | صفحات دليل لينكس 6.18 |