Sémaphore

Résolu
superismali Messages postés 38 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 8 janvier 2007 - 8 janv. 2007 à 15:45
billelhiphop Messages postés 2 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 3 juin 2012 - 20 janv. 2007 à 11:02
Bonjour tout le monde,
J'ai un petit programme en csharp qui lit une valeur X d'une base mysql, la multiplie par son TVA et la réinsère dans la base.
Jusque là mon prog fonctionne sans problème.
Parfois, il arrive que deux utilisateur accèdent à un meme instant T et que je trouve ma variable X et la multiplie 2 fois par le TVA, ce qui me pose problème.
Qui peut m'aider??

Superismali

2 réponses

cs_Warwick Messages postés 81 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 8 octobre 2007
8 janv. 2007 à 22:25
Je pense qu'une bonne solution ne serait pas du côté C#, mais plutôt MySQL avec les instructions LOCK et UNLOCK si tes droits en base de données le permette.
Warwick.
3
billelhiphop Messages postés 2 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 3 juin 2012
20 janv. 2007 à 11:02
je crois que ton probléme sera résolu si tu déclare une variable booléenne qui sera à true si aucun utilisateur ne manipule la ressource et à false sinon, et aprés tu fais un test sur la variable dans chaque utilisateur avant d'effectuer la modification du genre:


bool etat= true;



while (!etat) ; // s'il ya qqun qui modifie la base alors on attend sans rien faire


ou bien "do while(!etat);"


et une fois la base est libérée l'utilisateur en attente peut y accéder en fesant:



etat =false;


//et puis tu fais ton accés à la base mysql


et aprés tu fais etat=true;


pour indiquer que l'utilisateur en cours a terminé son traitement
0
Rejoignez-nous