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'.

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;
}
Voilà, j'espère que quelqu'un pourra donner une réponse à mes interrogations


Nico