Est-ce que les fonctions de sumil dorment tous les fils ou juste celui qui l’appelle?

Je programme avec pthread sur Linux (Centos)? Je veux que les fils dorment un peu de temps pour attendre quelque chose. J’essaie d’utiliser sleep (), nanosleep () ou usleep () ou peut-être que quelque chose peut le faire. Je veux poser la question suivante: les fonctions de sumil mettent-elles tous les threads en sumil ou juste celui qui l’appelle? Des conseils ou des références seraient appréciées.

void *start_routine () { /* I just call sleep functions here */ sleep (1); /* sleep all threads or just the one who call it? what about nanosleep(), usleep(), actually I want the threads who call sleep function can sleep with micro-seconds or mili-seconds. */ ... } int main (int argc, char **argv) { /* I just create threads here */ pthread_create (... ...); ... return 0; } 

Mon programme de test:

 #define _GNU_SOURCE #include  #include  #include  #include  #include  void *start_routine (void *j) { unsigned long sum; int i; int jj; jj = (int)j; do { sum = 1; for (i=0; i<10000000; i++) { sum = sum * (sum+i); } if (jj == 0) { printf ("\033[22;33m[jj%d.%ld]\t", jj, sum); sleep(1); } else { printf ("\033[22;34m[jj%d.%ld]\t", jj, sum); } }while (1); pthread_exit((void *)0); } int main(int argc, char *argv[]) { cpu_set_t cpuset; pthread_t thread[2]; int i; i = 0; CPU_ZERO(&cpuset); CPU_SET(i, &cpuset); pthread_create (&thread[0], NULL, start_routine, (void *)i); pthread_setaffinity_np(thread[0], sizeof(cpu_set_t), &cpuset); i = 1; CPU_ZERO(&cpuset); CPU_SET(i, &cpuset); pthread_create (&thread[1], NULL, start_routine, (void *)i); pthread_setaffinity_np(thread[1], sizeof(cpu_set_t), &cpuset); pthread_exit (NULL); } 

La norme l’ épelle:

La fonction sleep () doit suspendre l’exécution du thread appelant jusqu’au ….

Le linux est tout aussi clair:

sleep() fait dormir le fil appelant jusqu’à ce que …

Il existe cependant quelques références erronées qui maintiennent le contraire. linux.die.net utilisé pour indiquer la mise en sleep fait attendre le processus .

Juste le fil qui appelle la fonction.