Bonjour à tous!
Toujours pour m'initier à Boost.Thread, j'essaie actuellement de construire un Compteur dans un thread, que je remet à zéro dans le programme principal de temps en temps.
Le problème est que je fourni au thread une fonction membre qui est interprétée comme une fonction et rien d'autre. Le fait d'appeler reset() ne va rien changer au fait que le compteur va continuer de s'incrémenter...
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #include <iostream> #include <string> #include <limits> #include <boost/thread/thread.hpp> #include <boost/bind.hpp> class Compteur { public : Compteur(std::string nom) : m_compteur(0), m_nom_compteur(nom), continuer(true) {std::cout << "Creation d'un compteur : " << m_nom_compteur << std::endl;} void incrementer(); void afficher() { std::cout << m_nom_compteur << " : " << m_compteur << std::endl; } void reset() {m_compteur = 0;} private: int m_compteur; std::string m_nom_compteur; bool continuer; }; void Compteur::incrementer() { while (continuer == true) { m_compteur++; afficher(); } } int main() { Compteur comp1("Compteur 1"); boost::thread compteur1(boost::bind(&Compteur::incrementer, comp1)); int i = 0; while(1) { if (i == 1000) { comp1.reset(); // Ne marche pas std::cout << "Remise a Zero" << std::endl; std::cout << "Appuyez sur entree pour continuer..."; std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' ); i = 0; } i++; std::cout <<"i = " << i << std::endl; } return 0; }
Question : comment faire pour modifier l'objet ?
![]()
Partager