Scroll to navigation

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؛ وعند حدوث خطأ، تعيد رقم خطأ غير صفري.

الأخطاء

ساعات وقت وحدة المعالجة المركزية لكل خيط غير مدعومة من النظام.
تعذر العثور على أي خيط بالمعرف thread.

السمات

للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر 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