Bonjour,
Je me pose la question de l'utilisation de usleep (ou nanosleep) en contexte
multithread, est-ce que seul le thread appellant la fonction est bloqué pour
le temps indiqué ou bien c'est le process qui est concerné, les documents à
ce sujet sur le web (souvent extrait de man) indique l'arrêt du process (ou
du programme). Pouvez vous éclairer ma lanterne ?
Merci,
AR
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe Blaess
> Je me pose la question de l'utilisation de usleep (ou nanosleep) en contexte multithread, est-ce que seul le thread appellant la fonction est bloqué pour le temps indiqué ou bien c'est le process qui est concerné, les documents à
Sous Linux, que ce soit avec la bibliothèque LinuxThreads ou la NPTL, le noyau "voit" distinctement les threads d'une application. Lorsqu'un appel-système bloquant se produit (sommeil avec nanosleep, mais également un read() sur une socket par exemple), il n'endort QUE le thread concerné.
Ceci ne serait pas le cas dans une implémentation des threads purement en espace utilisateur (comme le faisait la bibliothèque PcThreads il y a longtemps) car le noyau n'y verrait qu'un seul processus sans pouvoir distinguer ses threads.
Remarque, c'est le genre de question à laquelle on peut facilement trouver la réponse avec un petit test :
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
> Je me pose la question de l'utilisation de usleep (ou nanosleep) en contexte
multithread, est-ce que seul le thread appellant la fonction est bloqué pour
le temps indiqué ou bien c'est le process qui est concerné, les documents à
Sous Linux, que ce soit avec la bibliothèque LinuxThreads
ou la NPTL, le noyau "voit" distinctement les threads d'une
application. Lorsqu'un appel-système bloquant se produit
(sommeil avec nanosleep, mais également un read() sur
une socket par exemple), il n'endort QUE le thread concerné.
Ceci ne serait pas le cas dans une implémentation des threads
purement en espace utilisateur (comme le faisait la
bibliothèque PcThreads il y a longtemps) car le noyau n'y
verrait qu'un seul processus sans pouvoir distinguer ses
threads.
Remarque, c'est le genre de question à laquelle on peut
facilement trouver la réponse avec un petit test :
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
> Je me pose la question de l'utilisation de usleep (ou nanosleep) en contexte multithread, est-ce que seul le thread appellant la fonction est bloqué pour le temps indiqué ou bien c'est le process qui est concerné, les documents à
Sous Linux, que ce soit avec la bibliothèque LinuxThreads ou la NPTL, le noyau "voit" distinctement les threads d'une application. Lorsqu'un appel-système bloquant se produit (sommeil avec nanosleep, mais également un read() sur une socket par exemple), il n'endort QUE le thread concerné.
Ceci ne serait pas le cas dans une implémentation des threads purement en espace utilisateur (comme le faisait la bibliothèque PcThreads il y a longtemps) car le noyau n'y verrait qu'un seul processus sans pouvoir distinguer ses threads.
Remarque, c'est le genre de question à laquelle on peut facilement trouver la réponse avec un petit test :
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.