Historique des modifications - Message

Message #706

Sujet: C++ Irrlicht 1.1 et Ode 0.7 sous linux


Type Date Auteur Contenu
Création du message 11-12-2006 05:34:34 smeagol
je n'est pas trop le temps aujourd'hui je vous fait une tuto pour vendredi au plus tard.

je tient à préciser l'importance des mutex et sémaphore. Example:

dons un server multi thread. une position d'un joueur est en x=0 et y=0

un thread va déplacer de 5 sur x
puis un autre thread de 2.
et enfin un dernier de -7

si tout c'est bien passer on retourne en position initial.

mais il faut savoir que le processeur de vos machine peux permuter à n'importe quel moment.
clos si il permute pendant qu'il n'a pas fini d'ajouter 5 qu'il fait -7 mais la encore il n'a pas terminé qu'il permute aussi et il fait +2. Pendant qu'il fait plus 2 il revient au thread 1 et le termine sauf que la valeur dans la mémoire est à 2.

on se retrouve donc à faire un 2+2+2 et la position final est 6.

on apel l'objet de position une section critique

Comment faire donc pour éviter ces section critique. et bien de déclarer un mutex global au thread. Et faire un lock avant de rentrer en section critique. Ainsi 1 seul thread (Ou plusieurs avec les sémaphore) peu entrer dedans.

je tiens à préciser que seul les outils prédéfinis par C/C++ comme le mutex ou autre sont fiable. tous les autres créer pas vous même on des chances de créer des interblocages ou autres problèmes. Un mutex utilise des instructions spécials sur le processeur.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
166 invités en ligne
membre en ligne: -
RSS Feed