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

Multitache.h

Aller à la documentation de ce fichier.
00001 /*! \file Multitache.h
00002     \brief Surcouche pour multitache.
00003 
00004     Redéfinie tout un tas de fonctions système pour les rendre portables unix et windows.
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    1.0
00008     \date       18/03/2007
00009 */
00010 
00011 #ifndef INCLUDE_RSRC_PORTAGE_MULTITACHE
00012 #define INCLUDE_RSRC_PORTAGE_MULTITACHE
00013 
00014 
00015 #ifdef WIN32
00016     #include    <windows.h>
00017 
00018     typedef HANDLE                  THREAD;
00019     typedef HANDLE                  MUTEX;
00020 #ifndef ROUTINE
00021     typedef LPTHREAD_START_ROUTINE  ROUTINE;
00022 #endif
00023     typedef LPVOID                  PARAMETRE;
00024 
00025 #else
00026     #include    <pthread.h>
00027 
00028     //! Une tache
00029     /*! Crée une tache pour le multitache. */
00030     typedef pthread_t               THREAD;
00031 
00032     //! Une syncronisation
00033     /*! Crée un verou permétant de syncroniser des operations dans une application multitache. */
00034     typedef pthread_mutex_t         MUTEX;
00035 
00036 #ifndef ROUTINE
00037     //! Nom de routine
00038     /*! Pointe sur une fonction. */
00039     typedef void *(*ROUTINE)(void *);
00040 #endif
00041 
00042     //! Pointeur sur une variable quelquonque
00043     /*! Pointe sur une variable de n'importe quel type. */
00044     typedef void *                  PARAMETRE;
00045 #endif
00046 
00047 
00048 //! Demare un thread
00049 /*! Demare une tache \a Process avec un parametre \a Param.
00050     \param pThread adresse memoire du thread
00051     \param Process nom de la routine à threader
00052     \param Param parametre a passer à la routine
00053     \return 1 si OK sinon 0
00054     \sa ThreadStop(), ThreadExit() et ThreadWait()
00055 */
00056 int     ThreadStart(THREAD *pThread, ROUTINE Process, PARAMETRE Param);
00057 
00058 //! Stop un thread
00059 /*! Force la fermeture d'une tache.
00060     \param pThread adresse memoire du thread
00061     \sa ThreadStart(), ThreadExit() et ThreadWait()
00062 */
00063 void    ThreadStop(THREAD *pThread);
00064 
00065 //! Sortie d'un thread
00066 /*! Sortie propre d'une tache et renvoie \a iExitCode au systeme.
00067     \param iExitCode code retourner au systeme
00068     \sa ThreadStart(), ThreadStop() et ThreadWait()
00069 */
00070 void    ThreadExit(int iExitCode);
00071 
00072 //! Attent un thread
00073 /*! Pause la tache en cour en attente de la fin de la tache donnée.
00074     \param pThread adresse memoire du thread
00075     \sa ThreadStart(), ThreadStop() et ThreadExit()
00076 */
00077 void    ThreadWait(THREAD *pThread);
00078 
00079 //! Initialise un mutex
00080 /*! Initialise un verou de syncronisation de tache
00081     \param pMutex adresse memoire du mutex
00082     \sa MutexLock(), MutexUnLock() et MutexStop()
00083 */
00084 void    MutexInit(MUTEX *pMutex);
00085 
00086 //! Attent un mutex
00087 /*! Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.
00088     \param pMutex adresse memoire du mutex
00089     \sa MutexInit(), MutexUnLock() et MutexStop()
00090 */
00091 void    MutexLock(MUTEX *pMutex);
00092 
00093 //! Libere un mutex
00094 /*! Déverouille le mutex préalablement réservé.
00095     \param pMutex adresse memoire du mutex
00096     \sa MutexInit(), MutexLock() et ThreadExit()
00097 */
00098 void    MutexUnLock(MUTEX *pMutex);
00099 
00100 //! Stop un mutex
00101 /*! Déverouille et détrui un mutex.
00102     \param pMutex adresse memoire du mutex
00103     \sa MutexInit(), MutexLock() et MutexUnLock()
00104 */
00105 void    MutexStop(MUTEX *pMutex);
00106 
00107 #endif

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