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)
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)
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 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(); }
Partager