threads et variables communes
voila j'ai plusieurs threads (sur cela je suis a jour)
cote synchro je suis a jour
cote mutex je suis a jour
cote section critique je suis a jour.
Il me reste une question qui me titille.
dans le cas d'une variable globale (un bon vieux extern * T)
si cette variable est utilisée par plusieurs thread (en meme temps)
faut il obligatoirement la rentrer en mutex ou section critique
En effet, si cette variable a un sens precis est qu'une sequence lecture/test/ecriture se produit dessus au meme moment par 2 threads, cela peut donner un resultat erroné. Donc mutex/section critique.
Ma question est : dans le cadre d'une variable qui est juste en lecture seule, cela pose t il rellement probleme ? La je ne sais pas mais 2 threads qui accedent a la meme case memoire, cela peut il produire une erreur ?
Idem si ma variable est en lecture/ecriture mais que sa valeur a tres peu d'importance (par exemple une variable qui recoit une sorte d'horloge d'un thread et qui est consulté par un autre thread). Je me demande si l'acces simultané en lecture ecriture sur la meme case memoire est susceptible de lever une exception a l'interieur du processus ???
Comprenez moi, ce n'est pas pcq j'ai 2 threads que j'ai envie de mettre des mutex a droite et a gauche. :roll:
Re: threads et variables communes
Bonjour,
je pense que tu répond à tes questions tout seul :lol: :
Citation:
Envoyé par buzzz
dans le cas d'une variable globale (un bon vieux extern * T)
si cette variable est utilisée par plusieurs thread (en meme temps)
faut il obligatoirement la rentrer en mutex ou section critique
En effet, si cette variable a un sens precis est qu'une sequence lecture/test/ecriture se produit dessus au meme moment par 2 threads, cela peut donner un resultat erroné. Donc mutex/section critique.
Oui c'est le problème avec les variables globales.
Citation:
Envoyé par buzzz
Ma question est : dans le cadre d'une variable qui est juste en lecture seule, cela pose t il rellement probleme ? La je ne sais pas mais 2 threads qui accedent a la meme case memoire, cela peut il produire une erreur ?
Idem si ma variable est en lecture/ecriture mais que sa valeur a tres peu d'importance (par exemple une variable qui recoit une sorte d'horloge d'un thread et qui est consulté par un autre thread). Je me demande si l'acces simultané en lecture ecriture sur la meme case memoire est susceptible de lever une exception a l'interieur du processus ???
Dans le premier cas je ne pense pas qu'il y ai de problème dans le second si la valeur n'est pas critique c'est pas génant.
Enfin je ne suis pas spécialiste des thead mais cela semble logique.