Page principale | Hiérarchie des classes | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

Référence du fichier Multitache.h

Surcouche pour multitache. Plus de détails...

#include <pthread.h>

Aller au code source de ce fichier.

Typedefs

typedef pthread_t THREAD
 Une tache.
typedef pthread_mutex_t MUTEX
 Une syncronisation.
typedef void *(* ROUTINE )(void *)
 Nom de routine.
typedef void * PARAMETRE
 Pointeur sur une variable quelquonque.

Fonctions

int ThreadStart (THREAD *pThread, ROUTINE Process, PARAMETRE Param)
 Demare un thread.
void ThreadStop (THREAD *pThread)
 Stop un thread.
void ThreadExit (int iExitCode)
 Sortie d'un thread.
void ThreadWait (THREAD *pThread)
 Attent un thread.
void MutexInit (MUTEX *pMutex)
 Initialise un mutex.
void MutexLock (MUTEX *pMutex)
 Attent un mutex.
void MutexUnLock (MUTEX *pMutex)
 Libere un mutex.
void MutexStop (MUTEX *pMutex)
 Stop un mutex.


Description détaillée

Redéfinie tout un tas de fonctions système pour les rendre portables unix et windows.

Auteur:
aerith (www.aerith.fr)
Version:
1.0
Date:
18/03/2007

Définition dans le fichier Multitache.h.


Documentation des typedef

typedef pthread_mutex_t MUTEX
 

Crée un verou permétant de syncroniser des operations dans une application multitache.

Définition à la ligne 34 du fichier Multitache.h.

Référencé par MutexInit(), MutexLock(), MutexStop(), et MutexUnLock().

typedef void* PARAMETRE
 

Pointe sur une variable de n'importe quel type.

Définition à la ligne 44 du fichier Multitache.h.

Référencé par ModuleDynamiqueModule::Load(), NetParser::Parse(), et ThreadStart().

typedef void*(* ROUTINE)(void *)
 

Pointe sur une fonction.

Définition à la ligne 39 du fichier Multitache.h.

typedef pthread_t THREAD
 

Crée une tache pour le multitache.

Définition à la ligne 30 du fichier Multitache.h.

Référencé par ThreadStart(), ThreadStop(), et ThreadWait().


Documentation des fonctions

void MutexInit MUTEX pMutex  ) 
 

Initialise un verou de syncronisation de tache

Paramètres:
pMutex adresse memoire du mutex
Voir également:
MutexLock(), MutexUnLock() et MutexStop()

Définition à la ligne 66 du fichier Multitache.c.

Références MUTEX.

Référencé par DataBase::DataBase(), DataBaseTable::DataBaseTable(), Ini::Ini(), ModuleDynamique::ModuleDynamique(), MutexLock(), et XML::XML().

00067 {
00068 #ifdef WIN32
00069     *pMutex = (MUTEX)CreateMutex(NULL, FALSE, NULL);
00070 #else
00071     pthread_mutex_init((MUTEX *)pMutex, NULL);
00072 #endif
00073 }

void MutexLock MUTEX pMutex  ) 
 

Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.

Paramètres:
pMutex adresse memoire du mutex
Voir également:
MutexInit(), MutexUnLock() et MutexStop()

Définition à la ligne 75 du fichier Multitache.c.

Références MUTEX, et MutexInit().

Référencé par XML::Load(), ModuleDynamique::LoadModules(), XML::Print(), XML::Save(), Ini::Save(), DataBase::SaveBase(), DataBaseTable::SaveEntrys(), et ModuleDynamique::UnLoadModules().

00076 {
00077     if(!pMutex)
00078         MutexInit(pMutex);
00079 
00080 #ifdef WIN32
00081     WaitForSingleObject((MUTEX)pMutex, INFINITE);
00082 #else
00083     pthread_mutex_lock((MUTEX *)pMutex);
00084 #endif
00085 }

void MutexStop MUTEX pMutex  ) 
 

Déverouille et détrui un mutex.

Paramètres:
pMutex adresse memoire du mutex
Voir également:
MutexInit(), MutexLock() et MutexUnLock()

Définition à la ligne 96 du fichier Multitache.c.

Références MUTEX.

Référencé par DataBase::~DataBase(), DataBaseTable::~DataBaseTable(), Ini::~Ini(), ModuleDynamique::~ModuleDynamique(), et XML::~XML().

00097 {
00098 #ifdef WIN32
00099     ReleaseMutex((MUTEX)pMutex);
00100     CloseHandle((MUTEX)pMutex);
00101     *pMutex = NULL;
00102 #else
00103     pthread_mutex_destroy((MUTEX *)pMutex);
00104     pMutex = NULL;
00105 #endif
00106 }

void MutexUnLock MUTEX pMutex  ) 
 

Déverouille le mutex préalablement réservé.

Paramètres:
pMutex adresse memoire du mutex
Voir également:
MutexInit(), MutexLock() et ThreadExit()

Définition à la ligne 87 du fichier Multitache.c.

Références MUTEX.

Référencé par XML::Load(), ModuleDynamique::LoadModules(), XML::Print(), XML::Save(), Ini::Save(), DataBase::SaveBase(), DataBaseTable::SaveEntrys(), et ModuleDynamique::UnLoadModules().

00088 {
00089 #ifdef WIN32
00090     ReleaseMutex((MUTEX)pMutex);
00091 #else
00092     pthread_mutex_unlock((MUTEX *)pMutex);
00093 #endif
00094 }

void ThreadExit int  iExitCode  ) 
 

Sortie propre d'une tache et renvoie iExitCode au systeme.

Paramètres:
iExitCode code retourner au systeme
Voir également:
ThreadStart(), ThreadStop() et ThreadWait()

Définition à la ligne 46 du fichier Multitache.c.

Référencé par NetServer::GarbageClient(), et NetServer::WaitClient().

00047 {
00048 #ifdef WIN32
00049     ExitThread(ExitCode);
00050 #else
00051     pthread_exit((void *)&ExitCode);
00052 #endif
00053 }

int ThreadStart THREAD pThread,
ROUTINE  Process,
PARAMETRE  Param
 

Demare une tache Process avec un parametre Param.

Paramètres:
pThread adresse memoire du thread
Process nom de la routine à threader
Param parametre a passer à la routine
Renvoie:
1 si OK sinon 0
Voir également:
ThreadStop(), ThreadExit() et ThreadWait()

Définition à la ligne 14 du fichier Multitache.c.

Références PARAMETRE, ROUTINE, et THREAD.

Référencé par NetServer::Start(), et NetServer::WaitClient().

00015 {
00016 #ifdef WIN32
00017     *pThread = (THREAD)CreateThread(NULL, 0, (ROUTINE)Process, (PARAMETRE)Param, 0, NULL);
00018     if(pThread == INVALID_HANDLE_VALUE)
00019         return 1;
00020 #else
00021     pthread_attr_t Type;
00022 
00023     if(pthread_attr_init(&Type))
00024         return(1);
00025 
00026     pthread_attr_setdetachstate(&Type, PTHREAD_CREATE_JOINABLE);
00027 
00028     if(pthread_create((THREAD *)pThread, &Type, (ROUTINE)Process, (PARAMETRE)Param))
00029         return 1;
00030 #endif
00031 
00032     return 0;
00033 }

void ThreadStop THREAD pThread  ) 
 

Force la fermeture d'une tache.

Paramètres:
pThread adresse memoire du thread
Voir également:
ThreadStart(), ThreadExit() et ThreadWait()

Définition à la ligne 35 du fichier Multitache.c.

Références THREAD.

00036 {
00037 #ifdef WIN32
00038     TerminateThread((THREAD)pThread, FALSE);
00039     CloseHandle((THREAD)pThread);
00040 #else
00041     pthread_cancel((THREAD)pThread);
00042 #endif
00043     *pThread = 0;
00044 }

void ThreadWait THREAD pThread  ) 
 

Pause la tache en cour en attente de la fin de la tache donnée.

Paramètres:
pThread adresse memoire du thread
Voir également:
ThreadStart(), ThreadStop() et ThreadExit()

Définition à la ligne 55 du fichier Multitache.c.

Références THREAD.

Référencé par NetServer::GarbageClient(), et NetServer::Stop().

00056 {
00057 #ifdef WIN32
00058     WaitForSingleObject((THREAD)pThread, INFINITE);
00059     CloseHandle((THREAD)pThread);
00060 #else
00061     pthread_join((THREAD)pThread, NULL);
00062 #endif
00063     *pThread = 0;
00064 }


Généré le Thu Sep 6 13:57:47 2007 pour A.I.F. par  doxygen 1.3.9.1