Engineering school, 3rd year
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
1.9 KiB

/************************************************************************/
/* EX2.C : Priorités */
/************************************************************************/
/* Fonction : */
/* On crée une tâche TK (TKill) de priorité 3 permettant de quitter */
/* proprement une application. */
/* Puis une tâche T1 de priorité plus forte et une nouvelle fenêtre */
/* dans laquelle cette tâche écrit en permanence. */
/* Constater que TKill ne démarre pas. */
/* Puis mettre à T1 une priorité moins forte et expliquer. */
/************************************************************************/
#include <basec.h>
#include <str.h>
#include <video.h>
#define T1 1 /*Le numéro de la tâche Tache1 est 1*/
#define TK 2 /*Le numéro de la tâche TKill est 2*/
#define PT 3 /*La priorité de la tâche Tache1 est 2*/
#define PTK 4 /*La priorité de la tâche TKill est 3*/
#define ESC 0x1b
Word F0,F1,F2;
#include "tempo.c"
/*--------------------------------------------------------------------*/
TKill(void)
{
Char car;
while(1)
{
LireCar(F1,ON,&car);
if(car==ESC)
{
RetDos();
}
}
}
/*--------------------------------------------------------------------*/
Tache1(void)
{
while(1)
{
EcrTexte(F1,"T1111111");
Tempo(5);
EffaceFen(F1);
Tempo(5);
}
}
/*********************************************************************/
void main(void)
{
InitVideo();
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EXERCICE 2");
F1 = OuvreFen( 5, 5,20,10, bleu, blanc,"EnCours");
F2 = OuvreFen( 1,20,78,23, rouge,blanc,"TACHE MAIN");
InitNoyau();
CreateTask(T1, PT, Tache1);
CreateTask(TK, PTK,TKill);
EnterRegion();
StartTask(T1); /* Demarre T1 */
StartTask(TK); /* Demarre TK */
LeaveRegion();
while(1)
{
EcrCar(F2,'&');
Tempo(2);
}
}