.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_getcpuclockid 3 "20 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME pthread_getcpuclockid \- recuperează ID\-ul ceasului de timp CPU al unui fir de execuție .SH BIBLIOTECA Biblioteca de fire de execuție POSIX (\fIlibpthread\fP, \fI\-lpthread\fP) .SH REZUMAT .nf \fB#include \fP \fB#include \fP .PP \fBint pthread_getcpuclockid(pthread_t \fP\fIthread\fP\fB, clockid_t *\fP\fIclockid\fP\fB);\fP .fi .SH DESCRIERE .\" The clockid is constructed as follows: .\" *clockid = CLOCK_THREAD_CPUTIME_ID | (pd->tid << CLOCK_IDFIELD_SIZE) .\" where CLOCK_IDFIELD_SIZE is 3. Funcția \fBpthread_getcpuclockid\fP() obține ID\-ul ceasului de timp CPU al firului al cărui ID este dat în \fIthread\fP și îl returnează în locația indicată de \fIclockid\fP. .SH "VALOAREA RETURNATĂ" În caz de succes, această funcție returnează 0; în caz de eroare, returnează un număr de eroare diferit de zero. .SH ERORI\-IEȘIRE .TP \fBENOENT\fP .\" CLOCK_THREAD_CPUTIME_ID not defined .\" .\" Looking at nptl/pthread_getcpuclockid.c an ERANGE error would .\" be possible if kernel thread IDs took more than 29 bits (which .\" they currently cannot). Sistemul nu acceptă ceasuri de timp pentru fiecare fir de procesor. .TP \fBESRCH\fP Nu a putut fi găsit niciun fir de execuție cu identificatorul \fIthread\fP. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBpthread_getcpuclockid\fP() T} Siguranța firelor MT\-Safe .TE .sp 1 .SH STANDARDE POSIX.1\-2008. .SH ISTORIC glibc 2.2. POSIX.1\-2001. .SH NOTE Atunci când \fIthread\fP se referă la firul apelant, această funcție returnează un identificator care se referă la același ceas manipulat de \fBclock_gettime\fP(2) și \fBclock_settime\fP(2) atunci când i se dă ID\-ul ceasului \fBCLOCK_THREAD_CPUTIME_ID\fP. .SH EXEMPLE Programul de mai jos creează un fir de execuție și apoi utilizează \fBclock_gettime\fP(2) pentru a prelua timpul total de procesare al procesorului și timpul de procesare consumat de cele două fire de execuție pentru fiecare fir. Următoarea sesiune shell arată un exemplu de execuție: .PP .in +4n .EX $ \fB./a.out\fP Firul principal dormind Subfirul începe o buclă infinită Firul principal consumând ceva timp de CPU... Timpul total de procesare al procesorului: 1.368 Timpul CPU al firului principal: 0.376 Timpul CPU al subfirului: 0.992 .EE .in .SS "Sursa programului" .\" SRC BEGIN (pthread_getcpuclockid.c) \& .EX /* Editare legături cu „\-lrt” */ \& #include #include #include #include #include #include #include #include \& #define handle_error(msg) \e do { perror(msg); exit(EXIT_FAILURE); } while (0) \& #define handle_error_en(en, msg) \e do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) \& static void * thread_start(void *arg) { printf("Subfirul începe o buclă infinită\en"); for (;;) continue; } \& static void pclock(char *msg, clockid_t cid) { struct timespec ts; \& printf("%s", msg); if (clock_gettime(cid, &ts) == \-1) handle_error("clock_gettime"); printf("%4jd.%03ld\en", (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) handle_error_en(s, "pthread_create"); \& printf("Firul principal dormind\en"); sleep(1); \& printf("Firul principal consumând ceva timp de CPU...\en"); for (unsigned int j = 0; j < 2000000; j++) getppid(); \& pclock("Timpul total de procesare al procesorului: ", CLOCK_PROCESS_CPUTIME_ID); \& s = pthread_getcpuclockid(pthread_self(), &cid); if (s != 0) handle_error_en(s, "pthread_getcpuclockid"); pclock("Timpul CPU al firului principal: ", 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) handle_error_en(s, "pthread_getcpuclockid"); pclock("Timpul CPU al subfirului: 1 ", cid); \& exit(EXIT_SUCCESS); /* Termină ambele fire */ } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBclock_gettime\fP(2), \fBclock_settime\fP(2), \fBtimer_create\fP(2), \fBclock_getcpuclockid\fP(3), \fBpthread_self\fP(3), \fBpthreads\fP(7), \fBtime\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .