Salut, comme l'indique mon titre, je suis en train de faire mon entrée dans le monde des threads et je galère un peu.

j'ai une classe TOTO de la forme : (je mélange déclaration et définition pour limité la longueur du post)
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
class TOTO
{
    public : 
    void recup_mesg()  // récupération des message
    {
       pthread_mutex_lock( &verrou ); 
       ret.nb=recv(info.id,ret.buf,1500,0); // info.id est une socket tcp
                                                //surlaquelle je recois des message en xml
       pthread_mutex_unlock( &verrou );
    }
    Recv get_mesg() // retourne ma variable
    {
       Recv temp;
       pthread_mutex_lock( &verrou );
       temp = ret;
       pthread_mutex_unlock( &verrou );
       return temp;
    }
 
    private : 
    Recv ret;
    pthread_mutex_t verrou;
}
 
 
//AVEC : 
typedef struct
{
    int nb;             // Nombre d'octets recus
    char buf[1500];
} Recv;
le principe c'est que j'ai un thread qui fais une boucle pour récupérer mes messages (et elle les place temporairement dans ma varaible ret) avec recup_mesg
et un autre thread qui est censé récupéré les message l'un après l'autre avec la fonction get_mesg pour les parser.

le problème c'est que si je fais un cout de ret.buf au niveau de la fonction recup_mesg, j'obtiens bien mon text xml brut, mais si je le fais dans la fonction get_mesg, j'obtiens un truc bizarre (en l'occurrence un m$ )

je vois pas vraiment d'où ça vient, je me demande si ça ne serait pas un problème de verouillage, mais je ne pense pas.

merci de votre aide !