Bonjour à tous,
Je me décide à vous exposer mon problème après avoir abandonné toutes résolutions.
L'objectif de mon bout de code est de faire un "conteneur" qui va contenir des pointeurs de plusieurs objets afin de passer le conteneur en argument d'une thread (pour éviter de faire des variables globales monstrueuses).
La thread doit mettre à jour les deux structures en parrallèle du programme principale, ou d'autres threads travaillent sur le même objet (en vérité A est une structure de stockage d'info partagé par plusieurs thread et B est un socket TCP qui reçoit des ordres de mise à jour)
Malheureusement, les lignes :
conteneur->bar = &temp;
conteneur->bar2 = temp2;
me sortent une erreur de bus, j'ai tenté de débuguer avec gdb mais je ne parvient pas à trouver l'erreur.
Si une âme charitable passe par ici...
Merci d'avance.
Trivol
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <unistd.h> typedef struct A{ long foo1; long foo2; }A; typedef struct B{ long **foo; }B; typedef struct C{ A *bar; B *bar2; long bar3; }C; void *threadBidon(void *lpParam){ A *recup1 = (A*)lpParam->bar; B *recup2 = (B*)lpParam->bar2; long recup3 = (long)lpParam->bar3; /* Actions diverses sur ce qu'on a récupéré */ return (void *)NULL; } int main(){ A temp; B *temp2; C *conteneur; pthread_t thid; conteneur->bar = &temp; conteneur->bar2 = temp2; // conteneur->bar3 = 1; pthread_create(&thid, NULL, threadBidon, (void *)conteneur); return(0); }
Partager