liliefr2000
Messages postés2Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention23 avril 2005
-
23 avril 2005 à 14:59
cminus
Messages postés4Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention15 mars 2009
-
26 janv. 2006 à 23:08
bonjour
J'ai un probleme,je souhaite a l'aide de deux threads calculer la somme des entiers contenu dans un tableau..pour cela le premier thread va commence le tableau en partant de son debut et le deuxime thread va parcourir le tableau a partir de la fin.Ces deus threads doivent s'arreter lorsqu'il se rencontrerons et on aditionnera les deux somme obtenues.Le probleme est que si on autorise au deux thread d'acceder a la case du tableau ou il vont se rencontrer cette case sera comprise dans les deux sommes et donc additionnée deux fois.J'aimerai pour cela utiliser un semaphore qui controlera l'entree dans cette case.Mais je n'y arrive pas.Pouvez vous m'aider?.
Voiila le code sans semaphore:
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#define taille 5000000
#include <sys/types.h>
#include <sys/shm.h>
#include
#include <stdlib.h>
int i=0;
int j=taille-1;
int som1=0;
int som2=0;
int res, tab[taille];
int main()
{
int k;
pthread_t th1;
pthread_t th2;
void * ret;
for( k=0;k<=taille-1;k++)
{
tab[k]=1;
}
if(pthread_create(&th1,NULL,pro1,"1")<0)
{
fprintf(stderr,"pthread_create error for thread 1\n");
exit(1);
}
if(pthread_create(&th2,NULL,pro2,"2")<0)
{
fprintf(stderr,"pthread_create error for thread 2\n");
exit(1);
}
(void)pthread_join(th1,&ret);
(void)pthread_join(th2,&ret);
res=som1+som2;
printf("L'indice i : %d\n",i);
printf("L'indice j : %d\n",j);
printf("la somme des valeurs de tableaux est :%d \n",som1);
printf("la somme des valeurs de tableaux est :%d \n",som2);
printf("la somme des valeurs de tableaux est :%d \n",res);
}
cminus
Messages postés4Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention15 mars 2009 26 janv. 2006 à 23:08
Comme tu les threads n'accèdent qu'en lecture au tableau, il n'y besoin ni de sémphore ni de mutex.
Laisse les threads aller au bout de leurs boucles ensuite faire la moyenne si on veut !