Provided by: manpages-fr-dev_3.17.1-1_all bug

NOM

       pthread_getcpuclockid - retrieve ID of a thread’s CPU time clock

SYNOPSIS

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

       int pthread_getcpuclockid(pthread_t *thread, clockid_t *clock_id);

       Compilez et effectuez l’édition des liens avec l’option -pthread.

DESCRIPTION

       La  fonction  pthread_getcpuclockid()  renvoie  l’identifiant d’horloge
       pour l’horlge de temps CPU du thread thread.

VALEUR RENVOYÉE

       En cas de succès, cette fonction renvoie  0 ;  en  cas  d’erreur,  elle
       renvoie un numéro d’erreur non nul.

ERREURS

       ENOENT Les  horloges de temps CPU par thread ne sont pas pris en charge
              par le système.

       ESRCH  Aucun thread avec pour identifiant thread n’a pu être trouvé.

VERSIONS

       Cette fonction est disponible dans la glibc depuis la version 2.2.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       When thread refers to the calling  thread,  this  function  returns  an
       identifier   that   refers   to   the   same   clock   manipulated   by
       clock_gettime(3)  and  clock_settime(3)   when  given  the   clock   ID
       CLOCK_THREAD_CPUTIME_ID.

EXEMPLE

       The  program  below creates a thread and then uses clock_gettime(3)  to
       retrieve the total process  CPU  time,  and  the  per-thread  CPU  time
       consumed  by  the  two  threads.   The following shell session shows an
       example run:
           $ ./a.out
           Main thread sleeping
           Sub-thread starting infinite loop
           Main thread consuming some CPU time...
           Process total CPU time:    1.368
           Main thread CPU time:      0.376
           Sub-thread CPU time:       0.992

   Source du programme

       /* Effectuez l’édition des liens avec l’option "-lrt" */

       #include <time.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>
       #include <pthread.h>
       #include <string.h>
       #include <errno.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("Sub-thread 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)
               handle_error("clock_gettime");
           printf("%4ld.%03ld\n", ts.tv_sec, ts.tv_nsec / 1000000);
       }

       int
       main(int argc, char *argv[])
       {
           pthread_t thread;
           clockid_t cid;
           int j, s;

           s = pthread_create(&thread, NULL, thread_start, NULL);
           if (s != 0)
               handle_error_en(s, "pthread_create");

           printf("Main thread sleeping\n");
           sleep(1);

           printf("Main thread consuming some CPU time...\n");
           for (j = 0; j < 2000000; j++)
               getppid();

           pclock("Process total CPU time: ", CLOCK_PROCESS_CPUTIME_ID);

           s = pthread_getcpuclockid(pthread_self(), &cid);
           if (s != 0)
               handle_error_en(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)
               handle_error_en(s, "pthread_getcpuclockid");
           pclock("Sub-thread CPU time:    ", cid);

           exit(EXIT_SUCCESS);         /* Terminates both threads */
       }

VOIR AUSSI

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

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.17 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a  été  traduite  et  est  maintenue  par  Nicolas
       François  <nicolas.francois@centraliens.net> et l’équipe francophone de
       traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».