Les mutex se sont des mecanismes qui permettent de partager des donnes entre threads, par exemple si tu as une file, tu doit la proteger par un mutex (mutual exclusion) pour eviter que deux threads viennent ajouter un element en meme temps. Une seule Thread a le mutex, pour l'avoir les autres attendent.
donc prendre le mutex
ajouter un element dans la file
relacher le mutex.
sans le mutex tu risque de te trouver avec deux thread mettant un element au meme indice...
ce qui peut provoquer des plantages...
En general on suppose que l'ecriture d'une variable (bool, int, etc) est atomique, et que donc il n'est pas necessaire des les proteger par un mutex, evidement ce n'est pas le cas des chaines de caracteres... des objets etc...
Plus ta machine a de processeur plus il y a des chances que tu ais des problemes et sur des machines a 16 procs on a tendence a mettre suffisement de mutex.
le probleme des mutexes ce sont les dead-locks
imagine deux thread A et B
A prend le mutex1
B prends le mutex2
A tente de prendre le mutex2 et donc attends que B le rende pour continuer
B tente de prendre le mutex1 et donc attends que B le rende pour continuer....
DEADLOCK.
Verifie que les donnes que tu partages entre tes threads ne risquent rien. Chaque fois que tu te dis, non l'autre thread ne peu pas... reprend toi, et dis toi toujours que si ca peu mal se passer, ca se passera mal apres les tests (chez l'utilisateur final)...