Multi-threading, programmation multi-coeur
Bonsoir,
Je suis novice en multi-threading et je sollicite votre aide car je ne parviens pas à faire fonctionner un programme somme toute assez basique.
Je dois réaliser une (grosse) série de test, pour cela je souhaite répartir les calculs sur deux coeurs (pour commencer) et, in fine, sur 16.
J'ai donc réalisé la procédure suivante :
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
| int repartition(){
int i, status, process[2];
process[0] = fork();
if(process[0] == 0)
{
for(i=pow(2,n)-1; i>pow(2,n-1); i--)
{
if(glouton(i) == 0)
if(verification(i, 0, 1, 0) == 0)
exit(0);
}
exit(1);
}
process[1] = fork();
if(process[1] == 0)
{
for(i=pow(2,n-1); i>0; i--)
{
if(glouton(i) == 0)
if(verification(i, 0, 1, 0) == 0)
exit(0);
}
exit(1);
}
wait(&status);
if(WEXITSTATUS(status))
{
wait(&status);
if(WEXITSTATUS(status))
{
return 1;
}
}
kill(process[0], SIGKILL);
kill(process[1], SIGKILL);
wait(NULL);
return 0;
} |
Cette procédure est appelée récursivement.
Lorsque je lance le programme, il s'avère qu'il ne se termine pas, je n'arrive pas à savoir pourquoi?
Merci par avance pour vos réponses.
Bien cordialement.