Bonsoir,
J’implémente sur Boost::thread une classe mère de façon a gérer facilement mes threads sous formes d'objets.
Chaque objet voulant être threadé hérite de cette classe et redéfinie une méthodes propre a son traitement. Il peut également ajouter un process d'init et de fin de traitement.
Voici le code
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 class Task { public: Task(); ~Task(); virtual void taskRun ( void ) = 0; virtual void taskInit ( void ); virtual void taskTerminate( void ); void taskStart ( void ); void Exec ( void ); void Wait ( void ); protected: private: boost::thread mThread; };J'aurais voulu eglement rajouter comme traitement l'arret (que je ne sais malheureusement pas comment faire :/)
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 void Task::Exec( void ) { taskInit(); taskStart(); taskTerminate(); } void Task::Wait() { mThread.join(); } void Task::taskInit( void ) { } void Task::taskStart( void ) { cout << "Task::taskStart" << endl; mThread = boost::thread( boost::bind( &Task::taskRun, boost::ref(*this) ) ); } void Task::taskTerminate( void ) { }
Avez vous une idée sur comment je pourrais proceder ?
Merci d'avance
Guitou
Partager