Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       pthread_getcpuclockid - recuperează ID-ul ceasului de timp CPU al unui fir de execuție

BIBLIOTECA

       Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

SINOPSIS

       #include <pthread.h>
       #include <time.h>

       int pthread_getcpuclockid(pthread_t thread, clockid_t *clockid);

DESCRIERE

       Funcția  pthread_getcpuclockid()  obține  ID-ul  ceasului  de timp CPU al firului al cărui ID este dat în
       thread și îl returnează în locația indicată de clockid.

VALOAREA RETURNATĂ

       În caz de succes, această funcție returnează 0; în caz de eroare, returnează un număr de  eroare  diferit
       de zero.

ERORI-IEȘIRE

       ENOENT Sistemul nu acceptă ceasuri de timp pentru fiecare fir de procesor.

       ESRCH  Nu a putut fi găsit niciun fir de execuție cu identificatorul thread.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ pthread_getcpuclockid()                                                 │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       POSIX.1-2008.

ISTORIC

       glibc 2.2.  POSIX.1-2001.

NOTE

       Atunci când thread se referă la firul apelant, această funcție returnează un identificator care se referă
       la  același  ceas  manipulat  de  clock_gettime(2) și clock_settime(2) atunci când i se dă ID-ul ceasului
       CLOCK_THREAD_CPUTIME_ID.

EXEMPLE

       Programul de mai jos creează un fir de execuție și  apoi  utilizează  clock_gettime(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:

           $ ./a.out
           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

   Sursa programului

       /* Editare legături cu „-lrt” */

       #include <errno.h>
       #include <pthread.h>
       #include <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>
       #include <time.h>
       #include <unistd.h>

       #define handle_error(msg) \
               do { perror(msg); exit(EXIT_FAILURE); } while (0)

       #define handle_error_en(en, msg) \
               do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)

       static void *
       thread_start(void *arg)
       {
           printf("Subfirul începe o buclă infinită\n");
           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\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)
               handle_error_en(s, "pthread_create");

           printf("Firul principal dormind\n");
           sleep(1);

           printf("Firul principal consumând ceva timp de CPU...\n");
           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("Timpul CPU al firului principal:   ", 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 */
       }

CONSULTAȚI ȘI

       clock_gettime(2),    clock_settime(2),    timer_create(2),    clock_getcpuclockid(3),    pthread_self(3),
       pthreads(7), time(7)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                         pthread_getcpuclockid(3)