bonjour

je voudrais faire la chose suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
mutex m;
m.lock();
cout << "alpha";
m.lock();
cout << "beta";
m.unlock()
dans la réalité quand je met un << endl il fait l'unlock

mais ce que je comprend pas c'est que dans le même thread (l'application j'ai une erreur sur le cout << "beta", je pensais naïvement qu'on pouvait dans le même thread prendre plusieurs fois le mutex et le libérer une seule fois
des que j'en prend deux ca coince

pour expliquer j'aurais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
void funcA(){
m.lock();
cout << "alpha";
}
void funcB(){
m.lock();
cout << "beta";
}
void funcEnd(){
m.unlock();
}
avec un trhead qui peut appeler funcA puis FuncB puis FuncEnd
un autre FuncB puis FuncEnd
et un troisième funcA puis FuncEnd

dans la réalité j'ai surchargé l'operateur << dans un classe donc je sais pas vraiment dans quelle surcharge on passera en premier

vous avez une idée ?