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

SurcoucheMultitache.h

Aller à la documentation de ce fichier.
00001 /*! \file SurcoucheMultitache.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 (http://aerith.fr)
00007     \version    1.0
00008     \date       11/03/2008
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     //! Une tache
00019     /*! Crée une tache pour le multitache. */
00020     typedef HANDLE                  THREAD;
00021 
00022     //! Une syncronisation
00023     /*! Crée un verou permétant de syncroniser des operations dans une application multitache. */
00024     typedef HANDLE                  MUTEX;
00025 
00026     #ifndef ROUTINE
00027         //! Nom de routine
00028         /*! Pointe sur une fonction. */
00029         typedef LPTHREAD_START_ROUTINE  ROUTINE;
00030     #endif
00031 
00032     //! Pointeur sur une variable quelquonque
00033     /*! Pointe sur une variable de n'importe quel type. */
00034     typedef LPVOID                  PARAMETRE;
00035 
00036 #else
00037     #include    <pthread.h>
00038     #include    <string.h>
00039 
00040     //! Une tache
00041     /*! Crée une tache pour le multitache. */
00042     typedef pthread_t               THREAD;
00043 
00044     //! Une syncronisation
00045     /*! Crée un verou permétant de syncroniser des operations dans une application multitache. */
00046     typedef pthread_mutex_t     MUTEX;
00047 
00048     #ifndef ROUTINE
00049         //! Nom de routine
00050         /*! Pointe sur une fonction. */
00051         typedef void *(*ROUTINE)(void *);
00052     #endif
00053 
00054     //! Pointeur sur une variable quelquonque
00055     /*! Pointe sur une variable de n'importe quel type. */
00056     typedef void                    *PARAMETRE;
00057 #endif
00058 
00059 
00060 //! Demare un thread
00061 /*! Demare une tache \a Process avec un parametre \a Param.
00062     \param pThread adresse memoire du thread
00063     \param Process nom de la routine à threader
00064     \param Param parametre a passer à la routine
00065     \return 1 si OK sinon 0
00066     \sa ThreadStop(), ThreadExit() et ThreadWait()
00067 */
00068 int     ThreadStart(THREAD *pThread, ROUTINE Process, PARAMETRE Param);
00069 
00070 //! Stop un thread
00071 /*! Force la fermeture d'une tache.
00072     \param pThread adresse memoire du thread
00073     \sa ThreadStart(), ThreadExit() et ThreadWait()
00074 */
00075 void    ThreadStop(THREAD *pThread);
00076 
00077 //! Sortie d'un thread
00078 /*! Sortie propre d'une tache et renvoie \a iExitCode au systeme.
00079     \param iExitCode code retourner au systeme
00080     \sa ThreadStart(), ThreadStop() et ThreadWait()
00081 */
00082 void    ThreadExit(int iExitCode);
00083 
00084 //! Attent un thread
00085 /*! Pause la tache en cour en attente de la fin de la tache donnée.
00086     \param pThread adresse memoire du thread
00087     \sa ThreadStart(), ThreadStop() et ThreadExit()
00088 */
00089 void    ThreadWait(THREAD *pThread);
00090 
00091 //! Retourne l'id du thread
00092 /*! Retourne l'id du thread qui éxécute la fonction.
00093 */
00094 unsigned int    ThreadId();
00095 
00096 //! Initialise un mutex
00097 /*! Initialise un verou de syncronisation de tache
00098     \param pMutex adresse memoire du mutex
00099     \sa MutexLock(), MutexUnLock() et MutexStop()
00100 */
00101 void    MutexInit(MUTEX *pMutex);
00102 
00103 //! Attent un mutex
00104 /*! Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.
00105     \param pMutex adresse memoire du mutex
00106     \sa MutexInit(), MutexUnLock() et MutexStop()
00107 */
00108 void    MutexLock(MUTEX *pMutex);
00109 
00110 //! Libere un mutex
00111 /*! Déverouille le mutex préalablement réservé.
00112     \param pMutex adresse memoire du mutex
00113     \sa MutexInit(), MutexLock() et ThreadExit()
00114 */
00115 void    MutexUnLock(MUTEX *pMutex);
00116 
00117 //! Stop un mutex
00118 /*! Déverouille et détrui un mutex.
00119     \param pMutex adresse memoire du mutex
00120     \sa MutexInit(), MutexLock() et MutexUnLock()
00121 */
00122 void    MutexStop(MUTEX *pMutex);
00123 
00124 #endif

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