Bonjour,
Je suis en train de bosser sur un petit projet avec les threads mais je rencontre un problème que je n'arrive pas à solutionner. Le programme dont le code est présenté ci-dessous, créé N threads en appelant une fonction bidon et attend ensuite l'ensemble des threads créés.
Le problème c'est que le programme ne lance que 4 threads au lieu des 5 que je veux par exemple lui demander de lancer. De plus, le programme se termine par une 'segmentation fault'.
Voilà, j'espère que quelqu'un pourra donner une réponse à mes interrogations
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 #include <stdio.h> #include <stdlib.h> #include <pthread.h> void * toto( void * param ) { printf("Creation du thread numero %d\n", (int)param); return NULL; } int main( int argc, char **argv ) { int i, N; pthread_t * pthread_id; N = atoi(argv[1]); pthread_id = (pthread_t *)malloc(N); printf("Nb threads demandes : %d\n", N); for( i=0; i<N; i++ ) pthread_create(&pthread_id[i], NULL, toto, (void *)i); for( i=0; i<N; i++ ) pthread_join(pthread_id[i], NULL); printf("dellasocation ...\n"); free(pthread_id); return EXIT_SUCCESS; }
Nico
Partager