Rechercher : dans
Par :

[C++] thread partage de variables

Dernière réponse le 2 mar 2006 à 09:04:29 Char Snipeur, le 1 mar 2006 à 13:26:05 
 Signaler ce message aux modérateurs

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 Salutation !
Char Snipeur

Meilleures réponses pour « [C++] thread partage de variables » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
[Windows XP] Supprimer les partages administratifs VoirPar défaut les systèmes Microsoft Windows possèdent des partages administratifs cachés afin de permettre à l'administrateur d'une machine d'accéder aux ressources de la machine à travers le réseau. Les partages administratifs par défaut,...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
Les classes en langage C++ VoirLa notion d'objet Le langage C est un langage procédural, c'est-à-dire que c'est un langage permettant de définir des données grâce à des variables, et des traitements grâce aux fonctions. L'apport principal du langage C++ par rapport au...
Les variables avec Perl VoirConcept de variable avec Perl Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Perl peuvent être de trois...

1

crabs, le 1 mar 2006 à 17:17:18

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 ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs

2

 Char Snipeur, le 2 mar 2006 à 09:04:29

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 :

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. Salutation !
Char Snipeur

Répondre à Char Snipeur