[C++] thread partage de variables
Fermé
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
-
1 mars 2006 à 13:26
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 2 mars 2006 à 09:04
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 2 mars 2006 à 09:04
Bonjour,
Pour accélerer un programme, je souhaite créer des threads afin de paralléliser le processus.
Première question, les différent thread d'un processus peuvent bien s'éxécuter sur plusieurs processeur?
Question principal, chaque thread modifiera un casse d'un tableau "double Tab[N]"
J'ai vu dans une doc JAVA qu'il y avait un problème de partage mémoire lors de l'éxécution de plusieurs threads en même temps pour accéder à une seule variable.
Penser vous que je risque d'avoir le problème? (par exemple Tab[2] est modifier comme il faut, mais pas Tab [5])
Merci
Pour accélerer un programme, je souhaite créer des threads afin de paralléliser le processus.
Première question, les différent thread d'un processus peuvent bien s'éxécuter sur plusieurs processeur?
Question principal, chaque thread modifiera un casse d'un tableau "double Tab[N]"
J'ai vu dans une doc JAVA qu'il y avait un problème de partage mémoire lors de l'éxécution de plusieurs threads en même temps pour accéder à une seule variable.
Penser vous que je risque d'avoir le problème? (par exemple Tab[2] est modifier comme il faut, mais pas Tab [5])
Merci
A voir également:
- [C++] thread partage de variables
- Partage de photos - Guide
- Partage d'abonnement - Accueil - Services en ligne
- Partage d'écran whatsapp pc - Accueil - Messagerie instantanée
- Album partagé google - Guide
- Partage de position permanente - Guide
2 réponses
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
1 mars 2006 à 17:17
1 mars 2006 à 17:17
Salut,
Suivant ton OS, il faut parfois préciser le niveau de concurence de ton
programme, soit combien de processeurs peuvent être utilisés, mais
normalement les CPU sont partagés entre les threads et les procesus.
Si chaque thread modifie sa propre case d'un tableau et a un travail bien séparé
des autres, tu n'aura pas de problème car le problème arrive si au moins
un thread écrit dans case mémoire utilisée par d'autre thread.
Si tu utilises la STL pour ton tableau il ne doit y avoir de problème non plus,
sauf dans le cas de l'ajout ou la suppression de valeurs, il faut prévoir un
mécanisme d'exclusion mutuelle.
Si tu veux plus de précisions, précises ton OS et la bibliothèque que tu
utilises pour les threads.
A+, crabs
Suivant ton OS, il faut parfois préciser le niveau de concurence de ton
programme, soit combien de processeurs peuvent être utilisés, mais
normalement les CPU sont partagés entre les threads et les procesus.
Si chaque thread modifie sa propre case d'un tableau et a un travail bien séparé
des autres, tu n'aura pas de problème car le problème arrive si au moins
un thread écrit dans case mémoire utilisée par d'autre thread.
Si tu utilises la STL pour ton tableau il ne doit y avoir de problème non plus,
sauf dans le cas de l'ajout ou la suppression de valeurs, il faut prévoir un
mécanisme d'exclusion mutuelle.
Si tu veux plus de précisions, précises ton OS et la bibliothèque que tu
utilises pour les threads.
A+, crabs
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
2 mars 2006 à 09:04
2 mars 2006 à 09:04
Merci crabs pour ta réponse clair et net.
Je tourne su Linux RedHat (noyau 2.4)
pour les thread, j'utilise "pthread.h" fourni avec Linux.
chaque thread fait le même chose, en fait, j'ai une fonction qui modifie la case d'un tableau. Je te met la partie de création des thread :
la fonction fct n'écri dans aucune variable global, par contre elle en déclare plusieur.
Je tourne su Linux RedHat (noyau 2.4)
pour les thread, j'utilise "pthread.h" fourni avec Linux.
chaque thread fait le même chose, en fait, j'ai une fonction qui modifie la case d'un tableau. Je te met la partie de création des thread :
for (int i=0;i<N;i++) pthread_create(thread[i],null,fct,&Tab[i]);
la fonction fct n'écri dans aucune variable global, par contre elle en déclare plusieur.