Référence de la classe Millie::Thread

#include <Thread.hpp>

Dérivée par Millie::ClonableThread, et Millie::GThread.

Graphe d'héritage de Millie::Thread:

Inheritance graph
[légende]
Graphe de collaboration de Millie::Thread:

Collaboration graph
[légende]
Liste de tous les membres

Fonctions membres publiques

 Thread ()
 Constructeur (ne lance pas le thread).
 Thread (const std::string &name)
 Constructeur.
bool isRunning ()
 Indique si le thread est en train de tourner.
void wait ()
 Permet d'attendre à ce que quelqu'un appelle notify.
bool isAlive ()
bool isStarted ()
 permet de savoir si le thread a été démarré ou non
void start ()
 démarre l'exécution du thread en parallèle au thread courant
void join ()
 permet, dans le thread courant, d'attendre la fin d'exécution du thread
void notify ()
 permet de réveiller un thread endormi avec wait
const std::string & getName () const
 permet d'obtenir le nom du thread
virtual void run ()
ThreadID getThreadId () const
 retourne l'identifiant du thread
virtual ~Thread ()

Fonctions membres publiques statiques

static ThreadID currentThread ()
 retourne l'identifiant du thread courant

Attributs protégés

Mutex _synchronizedIsRunning
bool _isRunning

Fonctions membres privées

void init ()

Attributs privés

std::string _name
bool _isAlive
bool _isStarted
bool _wasJoined
Mutex _synchronized
pthread_mutex_t _waitMutex
Mutex _synchronizedWait
Mutex _synchronizedRun
Mutex _synchronizedIsAlive
Mutex _synchronizedStart
Mutex _synchronizedWasJoined
pthread_cond_t _waitSynchro
pthread_t _thread
pthread_mutex_t _mutexWaitAll

Amis

void * threadHandler (void *pthread)

Description détaillée

Une classe permettant de gérer des threads de manière assez simple.

Les classes filles devront redéfinir la méthode run pour indiquer spécifier le traitement du thread. Il est fortement conseillé de définir le destructeur en lui faisant appeler la méthode join. Cela permet de sécuriser l'envoi d'exception

Il est donc possible de lancer plusieurs threads qui tourneront en parallèle sur la machine.

La méthode classique en utilisant cette classe pour créer un thread consiste donc à déclarer un nouveau thread sous cette forme :

     class MonThread : Thread {
       public:

        void run()
        {
          //something
        }

        ~MonThread() {
           join();
        }

     };

puis de l'instancier et le lancer aussi :

      MonThread t;

      t.start();

      // rejoint au thread courant
      t.join();

Il est possible, dans le cas où l'on a défini le destructeur en utilisant join de ne pas appeler join à la main dans le code.

join ne peut pas être défini dans le destructeur de la classe Thread, car il est possible qu'il y ait des incohérence. En effet, la sous classe MonThread sera déjà détruite lorsque l'on arrivera au destructeur du Thread. Et comme le thread est exécuté en parallèle, il y a des possibilité d'avoir de grosse incohérence.

La conception du thread là est inspiré de la conception des Thread Java.

Définition à la ligne 108 du fichier Thread.hpp.


Documentation des contructeurs et destructeur

Thread::Thread (  ) 

Constructeur (ne lance pas le thread).

Définition à la ligne 78 du fichier Thread.cpp.

Références init().

Thread::Thread ( const std::string &  name  ) 

Constructeur.

Paramètres:
name le nom du thread

Définition à la ligne 83 du fichier Thread.cpp.

Références _name, et init().

Thread::~Thread (  )  [virtual]

Destructeur

Exceptions:
IllegalThreadStateException si le thread n'a jamais été rejoint. Cela indique une erreur de programmation

Définition à la ligne 89 du fichier Thread.cpp.

Références _isAlive, _isStarted, _mutexWaitAll, _synchronizedStart, _waitMutex, _waitSynchro, et _wasJoined.


Documentation des fonctions membres

void Thread::init (  )  [private]

Définition à la ligne 65 du fichier Thread.cpp.

Références _isAlive, _isStarted, _mutexWaitAll, _waitMutex, _waitSynchro, et _wasJoined.

Référencé par Thread().

bool Thread::isRunning (  ) 

Indique si le thread est en train de tourner.

A noter que cette méthode retournera vrai entre l'appel à start et l'appel à join (ou au destructeur)

Définition à la ligne 114 du fichier Thread.cpp.

Références _isRunning, et _synchronizedIsRunning.

void Thread::wait (  ) 

Permet d'attendre à ce que quelqu'un appelle notify.

Exceptions:
IllegalThreadStateException si le thread n'est pas en cours d'exécution

Définition à la ligne 122 du fichier Thread.cpp.

Références _isRunning, _synchronizedIsRunning, _waitMutex, et _waitSynchro.

bool Thread::isAlive (  ) 

Définition à la ligne 141 du fichier Thread.cpp.

Références _isAlive, et _synchronizedIsAlive.

bool Millie::Thread::isStarted (  ) 

permet de savoir si le thread a été démarré ou non

Renvoie:
true si le thread a déjà été démarré et faux sinon

void Thread::start (  ) 

démarre l'exécution du thread en parallèle au thread courant

Exceptions:
IllegalThreadStateException si le thread avait déjà été lancé
ThreadCreationFailed si le thread n'a pu être crée
Cette méthode crée un thread et y exécute la méthode run

on est le seul dans start, on peut faire cet appel

Définition à la ligne 147 du fichier Thread.cpp.

Références _isRunning, _isStarted, _synchronizedIsRunning, _synchronizedRun, _synchronizedStart, _thread, et threadHandler.

void Thread::join (  ) 

permet, dans le thread courant, d'attendre la fin d'exécution du thread

Définition à la ligne 173 du fichier Thread.cpp.

Références _isStarted, _synchronizedStart, _thread, et _wasJoined.

Référencé par Millie::GThread::~GThread().

ThreadID Thread::currentThread (  )  [static]

retourne l'identifiant du thread courant

Définition à la ligne 184 du fichier Thread.cpp.

void Thread::notify (  ) 

permet de réveiller un thread endormi avec wait

Définition à la ligne 133 du fichier Thread.cpp.

Références _waitMutex, et _waitSynchro.

const std::string & Thread::getName (  )  const

permet d'obtenir le nom du thread

Renvoie:
le nom du thread

Définition à la ligne 190 du fichier Thread.cpp.

Références _name.

virtual void Millie::Thread::run (  )  [inline, virtual]

méthode virtuelle à redéfinir pour l'exécution en parallèle

Réimplémentée dans MonThread.

Définition à la ligne 209 du fichier Thread.hpp.

Référencé par Millie::threadHandler().

ThreadID Thread::getThreadId (  )  const

retourne l'identifiant du thread

Définition à la ligne 196 du fichier Thread.cpp.

Références _thread.


Documentation des fonctions amies et associées

void* threadHandler ( void *  pthread  )  [friend]

Thread

Définition à la ligne 43 du fichier Thread.cpp.

Référencé par start().


Documentation des données membres

std::string Millie::Thread::_name [private]

Définition à la ligne 113 du fichier Thread.hpp.

Référencé par getName(), et Thread().

bool Millie::Thread::_isAlive [private]

Définition à la ligne 114 du fichier Thread.hpp.

Référencé par init(), isAlive(), Millie::threadHandler(), et ~Thread().

bool Millie::Thread::_isStarted [private]

Définition à la ligne 115 du fichier Thread.hpp.

Référencé par init(), join(), start(), et ~Thread().

bool Millie::Thread::_wasJoined [private]

Définition à la ligne 116 du fichier Thread.hpp.

Référencé par init(), join(), et ~Thread().

Mutex Millie::Thread::_synchronized [private]

Définition à la ligne 118 du fichier Thread.hpp.

pthread_mutex_t Millie::Thread::_waitMutex [private]

Définition à la ligne 119 du fichier Thread.hpp.

Référencé par init(), notify(), wait(), et ~Thread().

Mutex Millie::Thread::_synchronizedWait [private]

Définition à la ligne 120 du fichier Thread.hpp.

Mutex Millie::Thread::_synchronizedRun [private]

Définition à la ligne 121 du fichier Thread.hpp.

Référencé par start(), et Millie::threadHandler().

Mutex Millie::Thread::_synchronizedIsAlive [private]

Définition à la ligne 122 du fichier Thread.hpp.

Référencé par isAlive(), et Millie::threadHandler().

Mutex Millie::Thread::_synchronizedStart [private]

Définition à la ligne 123 du fichier Thread.hpp.

Référencé par join(), start(), et ~Thread().

Mutex Millie::Thread::_synchronizedWasJoined [private]

Définition à la ligne 124 du fichier Thread.hpp.

pthread_cond_t Millie::Thread::_waitSynchro [private]

Définition à la ligne 126 du fichier Thread.hpp.

Référencé par init(), notify(), wait(), et ~Thread().

pthread_t Millie::Thread::_thread [private]

Définition à la ligne 127 du fichier Thread.hpp.

Référencé par getThreadId(), join(), et start().

pthread_mutex_t Millie::Thread::_mutexWaitAll [private]

Définition à la ligne 128 du fichier Thread.hpp.

Référencé par init(), et ~Thread().

Mutex Millie::Thread::_synchronizedIsRunning [protected]

Définition à la ligne 133 du fichier Thread.hpp.

Référencé par isRunning(), start(), wait(), et Millie::GThread::waitAllGroup().

bool Millie::Thread::_isRunning [protected]

Définition à la ligne 134 du fichier Thread.hpp.

Référencé par isRunning(), start(), wait(), et Millie::GThread::waitAllGroup().


La documentation de cette classe a été générée à partir des fichiers suivants :
Généré le Fri May 18 23:25:10 2007 pour Millie par  doxygen 1.5.1