Fait appel à sleep() de pthread mettre fil de sommeil ou un processus?
J'ai vu qu'il y a une question à propos de pthread sommeil linux
Cependant, quand j'ai regardé l'homme page sur ma machine linux, je vois la suite.
SYNOPSIS
#includeunsigned int sleep(unsigned int seconds);
DESCRIPTION
sleep() rend le processus actuel de sommeil jusqu'à ce secondes
ont écoulé ou d'une
signal arrive ce qui n'est pas ignoré.
Donc ma question est que je voudrais savoir qui de l'homme page à suivre pour mettre le fil de sommeil. En outre, si les deux sont vrais, comment puis-je contrôler que?
Je peux probablement écrire un peu de code pour le tester, mais je veux être sûr d'entendre certains commentaires d'autres personnes aussi bien.
Merci.
Vous devez vous connecter pour publier un commentaire.
Le libellé de votre page de man est probablement faux. La confiance de la norme et de la confiance la page de man kernel.org. Écrire au responsable de la documentation de votre distribution et de leur dire de mettre à jour les pages de manuel.
Il y a deux pages de manuel concernant la fonction de veille sur mon Linux:
Le 1er dit "le processus actuel" comme le fait le vôtre.
Le 2ème dit: "le thread appelant" mais son préambule déclare:
J'en conclus que
sleep(3)
décrit le comportement réel etsleep(3p)
n'est là que pour référence.L'homme page référencé par @cnicutar dit que
sleep
est pas thread-safe (peut-être que c'est nouveau depuis 2011?). Il est intéressant de noter, Dave Butenhof de 1997 du livre ("Programmation avec Posix Threads") inclut un exemple qui dort un thread avecsleep
(p18). Cette est un vieux thread (le tri) sur comp.de la programmation.les threads qui Butenhof et d'autres discutentnanosleep
dans le contexte de pthreads.En bref,
nanosleep
est, je pense, Ok, maissleep
ne l'est pas. Lenanosleep
homme page kernel.org ne dire que sinanosleep
est thread-safe, mais le gcc dormir docs dire qu'il est.