#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. |
Définition dans le fichier SurcoucheMultitache.cpp.
|
Initialise un verou de syncronisation de tache
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 }
|
|
Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.
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 }
|
|
Déverouille et détrui un mutex.
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 }
|
|
Déverouille le mutex préalablement réservé.
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 }
|
|
Sortie propre d'une tache et renvoie iExitCode au systeme.
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 }
|
|
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 }
|
|
Demare une tache Process avec un parametre Param.
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 }
|
|
Force la fermeture d'une tache.
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 }
|
|
Pause la tache en cour en attente de la fin de la tache donnée.
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 }
|