Page principale   Modules   Liste des composants   Liste des fichiers   Composants   Déclarations  

Interface d'initialisation & terminaison
[Interface FRED]

Ce module définit comment initier et terminer un programme concurrent FRED. Plus de détails...

Fonctions

void FredInitialize ()
 Initialisation de FRED.

void FredWaitTerminate ()
 Attente de fin d'exécution de tous les threads créés.

void FredAbort (char *mess)
 Arrêt brutal du programme et impression d'un message d'erreur.


Description détaillée

Pour savoir comment l'utiliser, voir Initialisation & terminaison et Les N philosophes

Documentation de la fonction

void FredAbort char *    mess
 

Paramètres:
mess  message d'erreur fatale


Implantation

00583 {
00584   printf(" \n FATAL  ERROR : ");
00585   printf(mess);
00586   printf("\n");
00587   exit(1); /* fin du programme */
00588 }

void FredInitialize  
 



Implantation La procédure principale main() initialise les variables d'état des différents modules de base, se transforme en un thread principal et lance le nettoyeur leon et le veilleur watchdog.

00538 {
00539   FredMasksInit(); /* initialiser les masques de signaux */
00540   FredSignalsInit();/* initialiser les traitants de signaux */
00541   nbFredThreads=0;/* aucun thread n'existe */
00542   FredQueueInit(&readyQ); /* file vide */
00543   TimeSharingInit(250); /* initialiser le temps partagé */
00544   MainThreadInit(); /* forger un pseudo thread principal */
00545   LeonInit(); /* créer le nettoyeur */
00546   WatchDogInit(); /* créer le chien de garde */
00547 }

void FredWaitTerminate  
 



Implantation Le thread principal se bloque s'il y d'autres threads que le watchdog et leon. Sinon il termine.

00558 { int nonfini=1;
00559   while(nonfini){
00560     FredMaskOn();/* début d'exclusion mutuelle */
00561     /* Il y a 2 threads de servitude : leon et watchdog */
00562     if(nbFredThreads>2) /* il y a d'autres threads */
00563       /* suspension dans la file d'attente de fin */
00564       FredThreadSuspend(&endQ);
00565     else  /* il n'y a plus que  leon et watchdog */
00566       nonfini=0;
00567     FredMaskOff();/* fin d'exclusion mutuelle */
00568   }
00569 }


Généré le Mon Jan 5 16:22:06 2004 par doxygen1.2.17