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

Référence du fichier SurcoucheMultitache.cpp

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

#include "SurcoucheMultitache.h"

Aller au code source de ce fichier.

Fonctions

int ThreadStart (THREAD *pThread, ROUTINE Process, PARAMETRE Param)
 Demare un thread.
void ThreadStop (THREAD *pThread)
 Stop un thread.
void ThreadExit (int ExitCode)
 Sortie d'un thread.
void ThreadWait (THREAD *pThread)
 Attent un thread.
unsigned int ThreadId ()
 Retourne l'id du 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 (http://aerith.fr)
Version:
1.0
Date:
11/03/2007

Définition dans le fichier SurcoucheMultitache.cpp.


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 78 du fichier SurcoucheMultitache.cpp.

Références MUTEX.

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

00079 {
00080 #ifdef WIN32
00081     *pMutex = (MUTEX)CreateMutex(NULL, FALSE, NULL);
00082 #else
00083     pthread_mutex_init((MUTEX *)pMutex, NULL);
00084 #endif
00085 }

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 87 du fichier SurcoucheMultitache.cpp.

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

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

00088 {
00089     if(!pMutex)
00090         MutexInit(pMutex);
00091 
00092 #ifdef WIN32
00093     WaitForSingleObject((MUTEX)pMutex, INFINITE);
00094 #else
00095     pthread_mutex_lock((MUTEX *)pMutex);
00096 #endif
00097 }

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 108 du fichier SurcoucheMultitache.cpp.

Références MUTEX.

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

00109 {
00110 #ifdef WIN32
00111     ReleaseMutex((MUTEX)pMutex);
00112     CloseHandle((MUTEX)pMutex);
00113     *pMutex = NULL;
00114 #else
00115     pthread_mutex_destroy((MUTEX *)pMutex);
00116     pMutex = NULL;
00117 #endif
00118 }

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 99 du fichier SurcoucheMultitache.cpp.

Références MUTEX.

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

00100 {
00101 #ifdef WIN32
00102     ReleaseMutex((MUTEX)pMutex);
00103 #else
00104     pthread_mutex_unlock((MUTEX *)pMutex);
00105 #endif
00106 }

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 SurcoucheMultitache.cpp.

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 }

unsigned int ThreadId  ) 
 

Retourne l'id du thread qui éxécute la fonction.

Définition à la ligne 66 du fichier SurcoucheMultitache.cpp.

Référencé par Error::Error(), et ThreadCallStack::ThreadCallStack().

00067 {
00068 #ifdef WIN32
00069     return GetCurrentThreadId();
00070 #else
00071     unsigned int    id = 0;
00072 
00073     memcpy(&id, (void*)(pthread_self() + 72), sizeof(pid_t));
00074     return id - 1;
00075 #endif
00076 }

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 SurcoucheMultitache.cpp.

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 SurcoucheMultitache.cpp.

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 SurcoucheMultitache.cpp.

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 = NULL;
00064 }


Généré le Thu Jun 12 09:12:30 2008 pour A.I.F. par  doxygen 1.3.9.1