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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.