[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: sleep(10)



Le 26 avril 2011 12:43, Claude Schoen <claude.schoen@esg-france.fr> a écrit :
>
> Je viens d’écrire un petit programme C++ avec deux threads POSIX, et un
> pause() en toute fin. Pause() qui se comporte normalement sous OpenSuse,
> mais pas sous DEBIAN : il n’y a pas d’arrêt. Sleep(n) non plus ne constitue
> pas un arrêt.
>
> Sleep n dans le shell est par contre normal (ouf).
>
>
>
> Sauriez vous SVP ou est le problème ?
>

sleep utilise un signal : il parait normal que son comportement
corresponde à ce que tu constate avec pause (qui gère aussi les
signaux).

De mémoire, les thread et les signaux ne font pas bon ménage, dans la
mesure où leur interactions ne sont pas bien spécifiées (quel thread
doit recevoir quel signal...). Pour que ça fonctionne, il faut faire
beaucoup de code, dont une bonne partie spécifique à la plateforme,
pour masquer les signaux dans certains thread et pas dans d'autres.

En général, il vaut mieux revoir tes besoins (on peut s'endormir avec
usleep par exemple) ou partir sur une bibliothèque pour gérer tout ça
à ta place (je pense au moins à ACE ou libevent, mais il doit en
exister des dizaines).

Bon courage.
-- 
Guilhem BONNEFILLE
-=- JID: guyou@im.apinc.org MSN: guilhem_bonnefille@hotmail.com
-=- mailto:guilhem.bonnefille@gmail.com
-=- http://nathguil.free.fr/


Reply to: