partage de variables globlales entre threads
Bonjour,
Est ce que les threads partagent une variable globale ?
voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
static void* ma_fonction(void* data)
{
...
var_global = 1; // line 36
...
}
extern pam_sm_authenticate( )
{
var_global = 0;
...
...
} |
la compilation me donne :
mon_fichier.c:36: erreur: 'var_global' undeclared ( first use in this function )
Est ce que deux threads appartenant à un meme processus ne partage pas une meme variable globale ?
merci d'avance
probleme non resolu : rectification
Bonjour,
petite précision (j'ai oublié de préciser un détail important du code ) : ma var_global est declarée dans ma fonction pam_sm_authenticate( ) qui est le thread principal et ptreahd(thread_aux, NULL, ma_fonction, void* data) est le thread qui partage var_global avec le premier. Pour illustrer voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| static void* ma_fonction(void* data)
{
...
var_global = 1; // line 36
incrementer(var_global);
...
}
extern pam_sm_authenticate( )
{
var_global = 0; // declaration de la variable globale
modifier(var_global);
...
pthread_create(thread_aux, NULL, ma_fonction, void* data); // ma_fonction doit incrémenter var_global
...
} |
Citation:
Envoyé par
Médinoc
Deux threads d'un même processus dans un même exécutable partagent leurs variables globales.
Encore faut-il qu'elles soient correctement déclarées dans les unités de compilation où elles sont utilisées...
ma question :
- est ce vraiment une variable globale dans cette cas de figure ?
- est elle déclarée au bon endroit ?
Merci d'avance