s'assurer qu'une méthode ne s'éxecute PAS avant une autre
hello,
j'ai un souci, qui est simple : les threads Windows ne sont pas bloquant si on apelle 2 fois lock()* dans le même thread, et j'aimeraient qu'ils le soient (c'est le cas des pthread). Bien sur c'est une utilisation abusive du mutex vous allez me dire : alors voilà ce que je veux faire, en pseudo-code et en assumant que 2 lock() consécutives soient bloquantes même dans le même thread, si vous pouvez m'aider à concevoir différement mon programme :
*) par lock() j'entend WaitForSingleObject(*lMutex, INFINITE)
Code:
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
|
Mutex mutex;
class A {
static a() {
...
mutex.unlock();}
static b() { // b() NE DOIT PAS S'EXECUTER AVANT a()
mutex.lock(); // déja lockée : bloquant jusqu'au l'appel de a()
mutex.unlock(); // le prochain appel de b() ne sera pas bloquant
...;}
}
void func {
...
A.a();
...
}
void main() {
mutex.lock();
...
new Thread(func);
...
A.b();
} |
en gros je ne VEUT PAS qu'une méthode puisse s'éxecuter AVANT une autre : comment faire ? (quelque chose de propre s'il vous plait, pas de while)