#include <GThread.hpp>
Est dérivée de Millie::Thread.
Dérivée par MonThread.
Graphe d'héritage de Millie::GThread:
Fonctions membres publiques | |
GThread () | |
Constructeur. | |
GThread (const std::string &name) | |
Constructeur avec un certain nom. | |
const ThreadGroup * | getThreadGroup () |
retourne le groupe actuel | |
void | waitAllGroup () |
permet de se synchroniser avec les autres membres du groupe | |
virtual | ~GThread () |
Fonctions membres protégées | |
void | setGroup (ThreadGroup *group) |
Attributs privés | |
ThreadGroup * | _group |
Mutex | _synchronizedGroup |
Amis | |
class | ThreadGroup |
La classe admet notamment la méthode supplémentaire waitAllGroup qui permet de se synchroniser avec tous les membres du groupe.
Si ce type de thread est uniquement utilisé au sein d'un groupe, contrairement à la classe Thread, il n'est pas obligatoire de redéfinir le destructeur car le groupe le fera automatiquement rejoindre avant la destruction
Définition à la ligne 52 du fichier GThread.hpp.
Millie::GThread::GThread | ( | ) |
Millie::GThread::GThread | ( | const std::string & | name | ) |
Constructeur avec un certain nom.
name | le nom du thread |
Définition à la ligne 43 du fichier GThread.cpp.
Références _group.
Millie::GThread::~GThread | ( | ) | [virtual] |
destructeur
Définition à la ligne 94 du fichier GThread.cpp.
Références _group, et Millie::Thread::join().
void Millie::GThread::setGroup | ( | ThreadGroup * | group | ) | [protected] |
positionne le groupe.
group | le groupe |
IllegalThreadStateException | si le thread appartient déjà à un groupe |
Si il appartient déjà à un groupe. On suppose que c'est l'autre groupe qui va le supprimer.
Définition à la ligne 56 du fichier GThread.cpp.
Références _group, et _synchronizedGroup.
Référencé par Millie::ThreadGroup::add().
const ThreadGroup * Millie::GThread::getThreadGroup | ( | ) |
retourne le groupe actuel
si aucun groupe n'a été défini, 0 est retourné
Définition à la ligne 50 du fichier GThread.cpp.
Références _group.
void Millie::GThread::waitAllGroup | ( | ) |
permet de se synchroniser avec les autres membres du groupe
Cette méthode permet d'attendre que tous les autres threads du groupe a appelé cette méthode. Dans le cas où l'appelant est le dernier du groupe, alors il ne s'endormira pas mais reveillera tout le monde. Afin que tout le monde puisse continuer.
L'utilisation de cette méthode peut être dangereuse (au sens bloquant). Si l'un des threads n'attend jamais les autres, et donc si le nombre de thread en attente reste toujours inférieur au nombre de thread total, alors les threads dormant ne seront jamais réveillé
IllegalThreadStateException | si pas de groupe n'est défini | |
IllegalThreadStateException | si le thread n'est pas en cours d'exécution |
Définition à la ligne 73 du fichier GThread.cpp.
Références _group, Millie::Thread::_isRunning, Millie::Thread::_synchronizedIsRunning, Millie::ThreadGroup::threadWaitAll(), et Millie::Mutex::unlock().
Référencé par MonThread::run().
friend class ThreadGroup [friend] |
Définition à la ligne 120 du fichier GThread.hpp.
ThreadGroup* Millie::GThread::_group [private] |
Définition à la ligne 57 du fichier GThread.hpp.
Référencé par getThreadGroup(), GThread(), setGroup(), waitAllGroup(), et ~GThread().
Mutex Millie::GThread::_synchronizedGroup [private] |