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;
 
};
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 )
{   
}
J'aurais voulu eglement rajouter comme traitement l'arret (que je ne sais malheureusement pas comment faire :/)
Avez vous une idée sur comment je pourrais proceder ?

Merci d'avance
Guitou