Bonjour,
j'aimerais savoir si je dois faire un mutex pour lire
le contenu d'une variable globale qui est utiliser par
plusieur thread.
je sais que lorsqu'on ecrit sur une variable partagé,
on fait des mutex
merci d'avance
Bonjour,
j'aimerais savoir si je dois faire un mutex pour lire
le contenu d'une variable globale qui est utiliser par
plusieur thread.
je sais que lorsqu'on ecrit sur une variable partagé,
on fait des mutex
merci d'avance
Des que tu as une variable utilisé et modifié par plusieurs Thread il faut forcement proteger l'acces a cette variable par exemple avec les mutex sinon atttention aux erreurs fatales
Le tout est de savoir où est le risque de conflit d'acces....
Si ta variable est initialisée avant le lancement des threads qui vont la lire, tu n'as aucun risque, donc il est inutile de la protéger par un mutex.
En revanche, si elle peut être mise à jour par un thread pendant que d'autres sont susceptibles de la lire, là, il faut la protéger!
Si la variable est une constante -> inutile de la proteger.
Si la variable est atomique, (moins de 32 bits sur une machine 32 bits en gal) il peut ne pas etre necessaire de la proteger, a condition que tous les acces soient atomique (pas de ++ ou de +=) mais uniquement des acces independents en lecture ou ecriture...
Si la varibale est souvent lue par bcp de thread et rarement lue, un verrou (LOCK) peut etre preferable à un mutex.
Un verrou a trois etats, libre bien sur, pris en ecriture (exclusif), ou pris en lecture. l'interet est que pluiseurs threads peuvent lire simultanement, contrairement au mutex.
Parce que ++ n'est pas atomique ? L'assembleur Intel comporte bien une instruction INC [mémoire/registre] pourtant ?Envoyé par Gandalf
Idem pour +=, l'instruction assembleur ADD ne fé pas tout d'un seul coup ?
Responsable technique forum & site
Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec
Le problème des verrous est quils déplacent le problème vu que ce sont les verrous qui deviennent la donnée partagée à protéger !Envoyé par Gandalf
Y'a rien de tel qu'un pthread_mutex
Tom
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager