Nous non plus, hélas, sans savoir ce que font tes threads... Ce qui est différent de connaître leur exécution précise (déterminisme) comme tu semble le croire : dans un programme déterministe à 100%, il n'y a justement pas besoin d'objets de synchronisation d'ailleurs.
Il faut savoir ce que font GLOBALEMENT tes threads pour amorcer un début de réponse : Lecture / écriture de fichier ? Calcul ? Transfert de données ? Affichage ? Saisie utilisateur ?
Il n'y a pas UNE réponse unique et universelle à ta question : cela dépend de l'application, des algorithmes utilisées, des données manipulées, et de pas mal d'autres paramètres.
Certes, on peut te donner un truc générique qui sera certes exact et complet, mais si tu n'as pas familier avec la programmation parallèle, ça ne te servira à rien... Car cela se résume dans la phrase suivante : "Tout élément non adapté à un traitement simultané ne doit être accédé qu'au travers d'une section critique". Super, t'es vachement avancé avec ça...
Si tu commences à peine la programmation parallèle, comme cela semble être le cas, ne te fais aucune illusion : soit tu auras des interblocages (deadlocks), soit tu auras des performances effondrées à cause de mutex trop nombreux et/ou inutiles. Ce n'est pas un drame, c'est à toi de tester suffisamment ton programme pour être certain que ça ne se produise pas. Point positif, en général, les deadlocks ou les mauvaises perfs se voient très très très vite...
Partager