Je viens d'=E9crire un petit programme C++ avec deux threads POSIX, et un p=
ause() en toute fin. Pause() qui se comporte normalement sous OpenSuse, mai=
s pas sous DEBIAN : il n'y a pas d'arr=EAt. Sleep(n) non plus ne constitue =
pas un arr=EAt.
Sleep n dans le shell est par contre normal (ouf).
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/C673E85BB1FBB54B9C392C27267C0F015C47FE32A5@ESG-FR-SBS2K8.esg-fr.local
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
Yves Rutschle
On Tue, Apr 26, 2011 at 12:43:17PM +0200, Claude Schoen wrote:
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.
Essaie de faire un programme minimum présentant le problème dont tu parles et poste-le ici.
Sauriez vous SVP ou est le problème ?
Au hasard, le processus a déjà reçu un signal et quand tu fais pause() il consomme simplement ce signal. Incidement, le fait que tu parles de thread me fait me demander si tu ne veux pas utiliser wait(2) plutôt.
Y.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
On Tue, Apr 26, 2011 at 12:43:17PM +0200, Claude Schoen
wrote:
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.
Essaie de faire un programme minimum présentant le problème
dont tu parles et poste-le ici.
Sauriez vous SVP ou est le problème ?
Au hasard, le processus a déjà reçu un signal et quand tu
fais pause() il consomme simplement ce signal. Incidement,
le fait que tu parles de thread me fait me demander si tu ne
veux pas utiliser wait(2) plutôt.
Y.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20110426120522.GB14868@naryves.com
On Tue, Apr 26, 2011 at 12:43:17PM +0200, Claude Schoen wrote:
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.
Essaie de faire un programme minimum présentant le problème dont tu parles et poste-le ici.
Sauriez vous SVP ou est le problème ?
Au hasard, le processus a déjà reçu un signal et quand tu fais pause() il consomme simplement ce signal. Incidement, le fait que tu parles de thread me fait me demander si tu ne veux pas utiliser wait(2) plutôt.
Y.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Guilhem Bonnefille
Le 26 avril 2011 12:43, Claude Schoen a écr it :
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 ny a pas darrê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).
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Le 26 avril 2011 12:43, Claude Schoen <claude.schoen@esg-france.fr> a écr it :
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 ny a pas darrê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).
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/BANLkTikqqHdbqRrCUAn9GAUfEQmO53Uq_A@mail.gmail.com
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 ny a pas darrê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).