Je travaille actuellement sur une application multi-thread qui serait déployée sur l'architecture bras et ppc. J'ai un problème avec pthread_cancel sur le bras.pthread_cancel se comporte différemment sur le bras et ppc?
pthread_cancel sur le bras ne se comporte pas de la même manière avec ppc. Le thread est annulé mais le destructeur de la variable locale du thread n'est pas appelé sur le bras. J'ai également essayé de définir explicitement une routine de gestionnaire de nettoyage d'annulation installée via pthread_cleanup_push. Mais il n'est pas appelé quand le thread est annulé.
Le code fonctionne bien avec ppc. Lorsqu'un thread est annulé, le destructeur de la variable locale est appelé. Et quand j'ai explicitement défini un gestionnaire de nettoyage, il a été appelé et exécuté lorsque pthread_cancel a été appelé.
Ai-je raté quelque chose? Certaines options du compilateur peut-être?
- Langage de programmation: C++
- Compilateurs: bras-linux-g ++/powerpc-linux-g ++
- OS: Linux
EDIT:
J'ai trouvé une sorte de problème similaire enregistré sur ce libc bug.
L'utilisation de gcc au lieu de g ++ et l'ajout d'option de compilateur -fno-exception ont fait l'affaire. Mais je veux vraiment comprendre ce qui se cache derrière ce problème. De plus, l'exception -fno-exception signifie que je ne serai pas capable de gérer les exceptions dans mon application, pas que je l'utilise maintenant mais que je puisse être dans le futur.
Merci.
Veuillez spécifier la langue et les compilateurs utilisés (pour les deux plates-formes). Cela ressemble à du C++, mais il vaut mieux être explicite. – unwind
Il serait également utile de savoir quel OS comme le paquet pthread est souvent spécifique au système d'exploitation. – Benoit
Je suggère également d'indiquer la version exacte du noyau Linux, le support de plate-forme cible utilisé dans chaque cas, et les versions de gcc/g ++, libc, et tout autre logiciel impliqué. Sans numéros de version précis, il est difficile de trouver de bons conseils. – jakobengblom2