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

#include <ThreadGroup.hpp>

Dérivée par Millie::ClonableThreadGroup.

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

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

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

Fonctions membres publiques

 ThreadGroup ()
 ThreadGroup (const std::string &name)
bool isRunning ()
 permet de savoir si l'ensemble des threads du groupe est en cours d'exécution
bool isStarted ()
 permet de savoir si le groupe a été démarré
const std::string & getName () const
 retourne le nombre du groupe
void setName (const std::string &name)
 spécifie un nom au groupe
void joinAll ()
 permet d'attendre que tout le monde rejoigne le thread courant
unsigned int getNbGThread ()
 Retourne le nombre de thread du groupe.
GThreadoperator[] (unsigned int pos)
 Retourne une référence sur un thread.
int getNbWaitingGThread ()
void notifyAll ()
 permet de réveiller tous les threads endormis sur wait
void startAll ()
 permet d'exécuter l'ensemble des threads en parallèle.
void add (GThread *thread)
 permet d'ajouter un thread au groupe.
virtual ~ThreadGroup ()
 destructeur

Fonctions membres protégées

bool threadWaitAll (GThread *t, pthread_mutex_t **mutex, pthread_cond_t **wait)

Fonctions membres privées

void init ()
int getNbWaitingThread ()

Attributs privés

bool _isRunning
bool _isStarted
std::string _name
std::vector< GThread * > _vectThread
std::vector< bool > _vectWaiting
pthread_mutex_t _mutexWaitAll
pthread_cond_t _waitSynchro
unsigned int _nbwaitingthread
Mutex _synchronizedWaitingThread
Mutex _synchronizedIsRunning
Mutex _synchronizedRun
Mutex _synchronizedIsStarted
Mutex _synchronizedNbThread
Mutex _synchronizedWaitAllNotify

Amis

class GThread

Description détaillée

Cette classe permet de gérer des groupes de GThread.

Il est possible d'utiliser des ThreadGroup de manière sécurisé, notamment au niveau de l'envoi des exceptions. On peut utiliser ce groupe, par exemple sous la forme :

class MonThread : public GThread
{

  public:

    void run()
    {
      for(int j=0; j<20; j++)
      {
       for(int i = 0; i<10; i++)
        std::cerr<<"Thread : "<<i;

       waitAllGroup();
      }
    }

};

...
      ThreadGroup group;
      group.add(new MonThread());
      group.add(new MonThread());

      group.startAll();

      ... on peut lancer des exceptions, l'appel à joinAll se fera automatiquement

Définition à la ligne 81 du fichier ThreadGroup.hpp.


Documentation des contructeurs et destructeur

ThreadGroup::ThreadGroup (  ) 

Permet de créer le groupe

Définition à la ligne 53 du fichier ThreadGroup.cpp.

Références init().

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

Permet de créer le groupe en spécifiant le nom

Définition à la ligne 58 du fichier ThreadGroup.cpp.

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

ThreadGroup::~ThreadGroup (  )  [virtual]

destructeur

Cette méthode attend que chaque thread ait rejoint le groupe

On attend que tout le monde rejoigne

On est certain à la sortie que _isRunning est false

on supprime chaque thread

Définition à la ligne 285 du fichier ThreadGroup.cpp.

Références _mutexWaitAll, _vectThread, _vectWaiting, _waitSynchro, et joinAll().


Documentation des fonctions membres

void ThreadGroup::init (  )  [private]

ThreadGroup

Définition à la ligne 42 du fichier ThreadGroup.cpp.

Références _isRunning, _isStarted, _mutexWaitAll, _nbwaitingthread, et _waitSynchro.

Référencé par ThreadGroup().

int Millie::ThreadGroup::getNbWaitingThread (  )  [private]

bool ThreadGroup::threadWaitAll ( GThread t,
pthread_mutex_t **  mutex,
pthread_cond_t **  wait 
) [protected]

Définition à la ligne 117 du fichier ThreadGroup.cpp.

Références _mutexWaitAll, _nbwaitingthread, _synchronizedNbThread, _synchronizedWaitingThread, _vectThread, _vectWaiting, _waitSynchro, et isStarted().

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

bool ThreadGroup::isRunning (  ) 

permet de savoir si l'ensemble des threads du groupe est en cours d'exécution

Renvoie:
true si il est en cours d'exécution et faux sinon

Définition à la ligne 70 du fichier ThreadGroup.cpp.

Références _isRunning, et _synchronizedIsRunning.

Référencé par startAll().

bool ThreadGroup::isStarted (  ) 

permet de savoir si le groupe a été démarré

Renvoie:
true si il a été démarré
A noter que isStarted devient vrai dès l'appel à startAll et restera vrai tout le temps

Définition à la ligne 64 du fichier ThreadGroup.cpp.

Références _isStarted, et _synchronizedIsStarted.

Référencé par joinAll(), notifyAll(), et threadWaitAll().

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

retourne le nombre du groupe

on ne peut changer le nom qu'à l'instanciation. Pas de mutex

Définition à la ligne 76 du fichier ThreadGroup.cpp.

Références _name.

void Millie::ThreadGroup::setName ( const std::string &  name  ) 

spécifie un nom au groupe

void ThreadGroup::joinAll (  ) 

permet d'attendre que tout le monde rejoigne le thread courant

Il n'est pas obligatoire d'appeler cette méthode, elle sera automatiquement appelée par le destructeur

si ca n'a tourne, on rejoint tout le monde On peut appeler isStarted car une fois _isStarted passé à true il ne revient jamais à false

on indique que tout le monde a été rejoint et on arrête

sinon, on ne fait rien de spécial

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

Références _isRunning, _synchronizedIsRunning, _vectThread, et isStarted().

Référencé par Millie::ClonableThreadGroup::~ClonableThreadGroup(), et ~ThreadGroup().

unsigned int ThreadGroup::getNbGThread (  ) 

Retourne le nombre de thread du groupe.

A noter que dès que le thread est démarré via startAll, le nombre nde varie plus

Définition à la ligne 104 du fichier ThreadGroup.cpp.

Références _synchronizedNbThread, et _vectThread.

GThread & ThreadGroup::operator[] ( unsigned int  pos  ) 

Retourne une référence sur un thread.

Paramètres:
pos le numéro du thread que l'on souhaite
Exceptions:
OutOfRange si pos<0 ou pos>= getNbGThread()

Définition à la ligne 313 du fichier ThreadGroup.cpp.

Références _synchronizedNbThread, et _vectThread.

int ThreadGroup::getNbWaitingGThread (  ) 

Définition à la ligne 111 du fichier ThreadGroup.cpp.

Références _nbwaitingthread, et _synchronizedWaitingThread.

void ThreadGroup::notifyAll (  ) 

permet de réveiller tous les threads endormis sur wait

Exceptions:
IllegalThreadStateException si le groupe n'a jamais été lancé

Réveille tout le monde

Définition à la ligne 216 du fichier ThreadGroup.cpp.

Références _nbwaitingthread, _vectThread, _vectWaiting, et isStarted().

void ThreadGroup::startAll (  ) 

permet d'exécuter l'ensemble des threads en parallèle.

Exceptions:
ThreadCreationFailed si la création d'un thread a échoué

Définition à la ligne 232 du fichier ThreadGroup.cpp.

Références _isRunning, _isStarted, _synchronizedIsRunning, _synchronizedIsStarted, _synchronizedNbThread, _vectThread, et isRunning().

Référencé par main().

void ThreadGroup::add ( GThread thread  ) 

permet d'ajouter un thread au groupe.

Ce thread doit avoir été alloué avec new et NE DEVRA PAS être détruit via delete. C'est le groupe qui se chargera de le détruire automatiquement.

Cela permet de sécuriser le groupe et les threads en cas d'envoi d'exception.

Exceptions:
IllegalArgument si le thread a déjà été ajouté
IllegalThreadStateException si le groupe a déjà été lancé

Si c'est déjà démarré, c'est pas bon

Le thread est alloué par new et c'est à nous de se charger de la libération

On ajoute sur la liste

Définition à la ligne 248 du fichier ThreadGroup.cpp.

Références _isStarted, _synchronizedIsStarted, _synchronizedNbThread, _vectThread, _vectWaiting, et Millie::GThread::setGroup().

Référencé par Millie::ClonableThreadGroup::add(), et main().


Documentation des fonctions amies et associées

friend class GThread [friend]

Définition à la ligne 212 du fichier ThreadGroup.hpp.


Documentation des données membres

bool Millie::ThreadGroup::_isRunning [private]

Définition à la ligne 85 du fichier ThreadGroup.hpp.

Référencé par init(), isRunning(), joinAll(), et startAll().

bool Millie::ThreadGroup::_isStarted [private]

Définition à la ligne 86 du fichier ThreadGroup.hpp.

Référencé par add(), init(), isStarted(), et startAll().

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

Définition à la ligne 88 du fichier ThreadGroup.hpp.

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

std::vector<GThread*> Millie::ThreadGroup::_vectThread [private]

Définition à la ligne 89 du fichier ThreadGroup.hpp.

Référencé par add(), getNbGThread(), joinAll(), notifyAll(), operator[](), startAll(), threadWaitAll(), Millie::ClonableThreadGroup::~ClonableThreadGroup(), et ~ThreadGroup().

std::vector<bool> Millie::ThreadGroup::_vectWaiting [private]

Définition à la ligne 90 du fichier ThreadGroup.hpp.

Référencé par add(), notifyAll(), threadWaitAll(), et ~ThreadGroup().

pthread_mutex_t Millie::ThreadGroup::_mutexWaitAll [private]

Définition à la ligne 92 du fichier ThreadGroup.hpp.

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

pthread_cond_t Millie::ThreadGroup::_waitSynchro [private]

Définition à la ligne 93 du fichier ThreadGroup.hpp.

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

unsigned int Millie::ThreadGroup::_nbwaitingthread [private]

Définition à la ligne 95 du fichier ThreadGroup.hpp.

Référencé par getNbWaitingGThread(), init(), notifyAll(), et threadWaitAll().

Mutex Millie::ThreadGroup::_synchronizedWaitingThread [private]

Définition à la ligne 97 du fichier ThreadGroup.hpp.

Référencé par getNbWaitingGThread(), et threadWaitAll().

Mutex Millie::ThreadGroup::_synchronizedIsRunning [private]

Définition à la ligne 98 du fichier ThreadGroup.hpp.

Référencé par isRunning(), joinAll(), et startAll().

Mutex Millie::ThreadGroup::_synchronizedRun [private]

Définition à la ligne 99 du fichier ThreadGroup.hpp.

Mutex Millie::ThreadGroup::_synchronizedIsStarted [private]

Définition à la ligne 100 du fichier ThreadGroup.hpp.

Référencé par add(), isStarted(), et startAll().

Mutex Millie::ThreadGroup::_synchronizedNbThread [private]

Définition à la ligne 101 du fichier ThreadGroup.hpp.

Référencé par add(), getNbGThread(), operator[](), startAll(), threadWaitAll(), et Millie::ClonableThreadGroup::~ClonableThreadGroup().

Mutex Millie::ThreadGroup::_synchronizedWaitAllNotify [private]

Définition à la ligne 102 du fichier ThreadGroup.hpp.


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