N'fonctions du sommeil le sommeil de tous les threads ou tout simplement celui qui appeler?
Je suis de programmation avec pthread sur linux(Centos)? Je veux threads dormir un peu de temps à attendre quelque chose. Je suis en train d'utiliser sleep(), nanosleep(), ou usleep() ou peut-être quelque chose peut le faire. J'ai envie de demander: N'fonctions du sommeil le sommeil de tous les threads ou tout simplement celui qui appeler? Des conseils ou des références serait apprécier.
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 <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <unistd.h>
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);
}
seul l'appelant
allez, allez vérifier sa question l'histoire. et c'est un seul revêtement pour une réponse
Je voulais dire "travail", pas de "mettre en garde". @bestsss - ce que pour vérifier? Je n'ai rien dit au sujet de cette question, j'ai même voté.
Pourquoi voulez-vous téléphoner à dormir?
allez, allez vérifier sa question l'histoire. et c'est un seul revêtement pour une réponse
Je voulais dire "travail", pas de "mettre en garde". @bestsss - ce que pour vérifier? Je n'ai rien dit au sujet de cette question, j'ai même voté.
Pourquoi voulez-vous téléphoner à dormir?
OriginalL'auteur Nick Dong | 2012-08-11
Vous devez vous connecter pour publier un commentaire.
La norme sorts:
La linux est tout aussi clair:
Il y a cependant quelques références erronées qui maintiennent le contraire. linux.die.net utilisé à l'état
sleep
causes le processus attendre.Il fait le thread appelant sommeil.
Merci je vais essayer à nouveau.
J'ai trouvé que m Red Hat Enterprise Linux Workstation version 6.6 système a une page de man pour dormir(3) qui se lit "sleep() rend le processus appelant sommeil jusqu'à ce que..." alors peut-être en amont des pages de man ont été mis à jour.
OriginalL'auteur cnicutar
Juste le thread qui appelle la fonction.
Oui, je l'ai testé. J'ai aussi lu la documentation pour les fonctions.
est 100% correct. Si le Sleep() l'appel est de rendre le thread principal de sommeil, alors le thread principal est la possibilité d'appeler directement ou est en attente sur une autre signal n'est fourni par le thread en sommeil après le sommeil.
Pourriez-vous poster votre programme de test ici? Je poste la mienne ci-dessus, mais je suis prête à confusion avec le résultat.
J'ai eu , grâce toute personne qui considère ma question.
OriginalL'auteur jalf