Oui, mais je n'ai pas compris ce que tu veux faire.
Par exemple,
avec array[9]
et value = 0 pour le thread 0
et value = 1 pour le thread 1
et value = 2 pour le thread 2
Veux tu ça (résultat aléatoire (le dernier qui écrit)) :
{1, 2, 0, 1, 2, 0, 2, 2, 1}
Ou ça (partage des itérations) :
{0, 0, 0, 1, 1, 1, 2, 2, 2}
---
Si tu veux écrire / mettre à jour une valeur dans un tableau partagé avec aucun partage des itérations, alors oui, il faut mettre un mutex lors des accès au tableau.
(Mais cela dégradera les performances.
En général, on utilise le parallélisme pour deux raisons:
- faire plusieurs choses simultanément (ex: une petite animation durant un temps de chargement)
- améliorer les performances (ex: faire plusieurs calculs (plus ou moins) indépendants sur plusieurs cœurs ou/et processeurs))
---
Dans le bout de code qui tu as donné, si i est partagé, et que chaque thread va de 0 à max (et qu'ils font chacun ++i) et si la taille de array est max, alors la lecture de array est comprise entre 0 et 3 * max (!)
Partager