|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : septembre 2010 Messages : 17 ![]() |
Bonjour,
Je développe actuellement une application en C++, tournant sur une carte SBC9261, sous Linux 2.6.24. Cette application est chargée de communiquer sur le bus CAN (bus de terrain très utilisé dans l'automobile) avec d'autres systèmes. Pour cela, j'ai mis en place dans mon programme deux phtreads : l'un s'occupe de "lire" les messages arrivant sur le CAN. Si un message est lu, il lance un second pthread qui lui va s'occuper de traiter la trame CAN reçue. Ainsi, il est possible de traiter une trame tout en en réceptionnant une autre, ce qui peut-être nécessaire lorsque le traitement d'une trame demande d'autres informations sur le bus CAN. Voici le code (simplifié) de la routine du premier thread (la réception) : Code :
Tout ceci fonctionne sans problème, du moins les 15 premières minutes. Un problème survient ensuite : Les threads canHandler semblent rester en mémoire après leur exécution, car la mémoire système décroît jusqu'à entraîner une Segmentation Fault. Si je retire le pthread_create(), l'appli peut tourner indéfiniment sans dépasser les 17% d'occupation mémoire. Le manuel de pthread_create() donne un exemple qui traite de la mémoire. En gros, ça donne : Code :
Toutes autres suggestions sont les bienvenues ! Merci pour votre aide ! |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Si tu ne veux pas faire de pthread_join(), il faut que tu créé un thread "détaché" en utilisant pthread_attr_setdetachstate().
La totalité des ressources d'un "joinable thread" (c'est le cas par défaut) n'est libérées que sur le pthread_join(). La totalité des ressources d'un "detached thread" est libérée automatiquement dès que le thread termine. |
|
|
20
|
|
|
#3 |
|
Invité régulier
![]() Inscription : septembre 2010 Messages : 17 ![]() |
Wow ! Grand merci, ça fonctionne !
Moi qui m'attendais à passer encore quelques jours là-dessus Encore merci, joyeuses fêtes ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com