Bonjour,
Je souhaite réalisé un petit programme tout bête et pourtant je rencontre de gros problèmes :s
J'ai pour le moment 2 threads :
- Le premier push dans une stack des informations
- Le deuxième traite les informations contenus dans cette stack.
On en déduit facilement que ma stack est une variable partage avec un joli petit mutex.
Afin que mon programme ne bouffe pas 100% du CPU, j'ai abandonne l'idée de faire un code de ce style dans mon deuxième thread :
Je me suis donc penche vers les fonctions : SleepConditionVariableCS et WakeConditionVariable. Voici le code que j'ai réalisé pour mon deuxième thread :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while (true) { if (myStack.size() > 0) { } }
Cependant, mon thread ne se réveille jamais lorsque je push un élément dans ma stack :s Celle-ci possède la méthode push suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 while (true) { EnterCriticalSection(&myMutex); while (!myStack.size()) SleepConditionVariableCS(&myCondition, &myMutex, INFINITE); traitement(); LeaveCriticalSection(&myMutex); }
Je suis vraiment a cours d'idée surtout que mon code n'est vraiment pas bien long. A mon avis je n'ai pas du comprendre le fonctionnement de ces deux fonctions donc si quelqu'un pouvait me renseignai ca serait super
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void push(const std::string &message) { EnterCriticalSection(&myMutex); myList.push_back(message); LeaveCriticalSection(&myMutex); WakeAllConditionVariable(&myCondition); }
Je vous remercie d'avance.
Partager