Utilisation de pthread_create avec plusieurs arguments
Bonjour,
je voudrai synchroniser entre deux thread qui font de simple calcules, le problème étant comment le père envoi au thread plusieurs arguments, plus précisément nous somme obliger de passer par une structure qui contient tous les arguments utilisé.
le problème comment caster du void=> une structure, et la je me suis mis a crée mon propre langage C :mrgreen:
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include <signal.h>
#include <stdio.h>
#include <math.h>
#include <type.h>
#include <unistd.h>
#include <pthread.h>
void *fils1(void *valeur){
int x1;
struct val{int a;int b;int c;int d};
val=(struct*) valeur;
x1=(-val.b-sqrt(val.d))/(2*val.a);
printf("Solution1 trouvée \n");
pthread_exit(x1);
}
void *fils2(void* struture){
int x2;
struct val{int a;int b;int c;int d};
val=(struct*) valeur;
x2=(-val.b-sqrt(val.d))/(2*val.a);
printf("Solution2 trouvée\n");
pthread_exit(x2);
}
int main(){
float d,x1,x2;
pthread_t p1,p2;
int val;
float solution1,solution2;
struct valeur{
int a;
int b;
int c;
int d;
};
while(1){
printf("Donnez la valeur de a\n");
scanf("%d",&valeur.a);
printf("Donnez la valeur de b\n");
scanf("%d",&valeur.b);
printf("Donnez la valeur de c\n");
scanf("%d",&valeur.c);
valeur.d=valeur.b*valeur.b-(4*valeur.a*valeur.c);
printf("delta D=%f\n",valeur.d);
if(d>=0){
pthread_create(&p1,NULL,*fils1,(void*)valeur);
pthread_create(&p1,NULL,*fils2,(void*)valeur);
pthread_join(&p1,solution1);
pthread_join(&p2,solution2);
printf("La Solution 1 X1= %f\nLa Solution 2 X2= %f\n",solution1,solution2);
}
else{
printf("Pas de Solution\n");
}
return 0;
} |