Bonjour,
Je développe sur Ubuntu 10.4 dans un environement multithread pour traiter les paquets réseaux. Je compile avec gcc et l'option -O0
Je définis des fonctions statiques dans maliste.h. Il s'agit de fonctions d'ajout, de parcours (iterator) de paquets dans une vlist. Ces fonctions sont appelées dans differents fichiers.c. Toutes ces fonctions sont intrinsèquement réentrantes (pas de variable globale, pas de variable statique)
J'ai un problème quand j'appelle deux fois mon iterator sur deux objets complètement differents mais qui se trouvent dans un meme fichier.c. J'ai l'impression que les fonctions ne sont pas vraiment réentrantes. J'ai des pointeurs qui sont corrompus dans mon iterator...
Ma question:
une fonction statique ne devrait-elle pas être appelée par deux threads différents sachant que les deux appels sont situés dans un meme fichier.c ?
Remarque:
Quand le meme iterator est appelé dans deux fichiers.c différents, ca ne pose pas de problème ...
Merci d'avance pour votre aide.
Partager