Thread

Fermé
dado82 Messages postés 5 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 7 janvier 2012 - 7 janv. 2012 à 16:44
Bonjour,

j cet exercice jessai de resoudre mais jarrive pas a lexecution c quoi ma faute svpp
aider moi svp je suis ebutante pour la programation merciiiiiiiiiiiii

ce le donner
un programme C sous UNIX qui permet de calculer la somme des valeurs de deux tableaux T1 et T2, de dimension 5 chacun, et ceci de la manière suivante :
5 threads seront crées et chaque thread thi (0<i<6) calcule la somme des ièmes cases des deux tableaux T1 et T2. Une fois les 5 threads terminent leurs calculs, le processus père calcule la somme des 5 valeurs retournées par les 5 threads.

Exemple : T1 est composé des valeurs 4 2 6 7 1
T2 est composé des valeurs 2 7 1 9 6
th1 calcule la somme de 4 et 2, th2 calcule la somme de 2 et 7, ..., th5 calcule la somme de 1 et 6.
Proposer une solution et ceci en synchronisant les différents processus par des variables partagées (mutex).
----------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void * somme _tab (int tab1 []; int tab2 [] ; int i ; int j; int *pointeur)

for(i=0; i<5; i++)
for(j=0; j<5; j++)
int som =0;
som =tab[i]+tab[j];
printf (la somme de tab[ %d] + tab[ %d] est %d d\n",som ,tab[i] et tab[j])

main ( int ac , char * av)

pthread_tab th1, th2, th3,th4,th5;

void *ret;

if (pthread_create (&th1,NULL , somme_tab,1)

fprintf(stderr, pthread_create error for thread 1\n");

if (pthread_create (&th2,NULL , somme_tab,2)

fprintf(stderr, pthread_create error for thread 2\n");

if (pthread_create (&th3,NULL , somme_tab,3)

fprintf(stderr, pthread_create error for thread 3\n");

if (pthread_create (&th4,NULL , somme_tab,4)

fprintf(stderr, pthread_create error for thread 4\n");

if (pthread_create (&th5,NULL , somme_tab,5)

fprintf(stderr, pthread_create error for thread 5\n");

exit(1);

(void) pthread_join(th1,&ret);
(void) pthread_join(th2,&ret);
(void) pthread_join(th3,&ret);
(void) pthread_join(th4,&ret);
(void) pthread_join(th5,&ret);

printf("fin du pére\n");
return (exit_success);

}