#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. |
Définition dans le fichier Multitache.h.
|
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(). |
|
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(). |
|
Pointe sur une fonction. Définition à la ligne 39 du fichier Multitache.h. |
|
Crée une tache pour le multitache. Définition à la ligne 30 du fichier Multitache.h. Référencé par ThreadStart(), ThreadStop(), et ThreadWait(). |
|
Initialise un verou de syncronisation de tache
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 }
|
|
Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.
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 }
|
|
Déverouille et détrui un mutex.
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 }
|
|
Déverouille le mutex préalablement réservé.
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 }
|
|
Sortie propre d'une tache et renvoie iExitCode au systeme.
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 }
|
|
Demare une tache Process avec un parametre Param.
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 }
|
|
Force la fermeture d'une tache.
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 }
|
|
Pause la tache en cour en attente de la fin de la tache donnée.
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 }
|