1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| #include<pthread.h>
#include<stdio.h>
#include<unistd.h>
#include<time.h>
static int Capteur1;
static int Capteur2;
static int Capteur3;
static int Capteur4;
char F1;
char F2;
char F3;
char F4;
static int voiture1;
static int voiture2;
static int voiture3;
static int voiture4;
pthread_t thread1;
pthread_t thread2;
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
int main()
{
voiture1 = voiture2 = voiture3 = voiture4 = 1;
Capteur1=voiture1;
Capteur2=voiture2;
Capteur3=voiture3;
Capteur4=voiture4;
do
{
if(Capteur1==1 || Capteur3==1)
{Capteur1 = Capteur3 = 1;}
if(Capteur2==1 || Capteur4==1)
{Capteur2 = Capteur4 = 1;}
pthread_create(&thread1,NULL,VOIE1(),NULL);
pthread_create(&thread2,NULL,VOIE2(),NULL);
if((Capteur1==1 || Capteur3==1) && (Capteur2==1 || Capteur4==1))
{
pthread_mutex_lock(&mutex);
F1=F3="R";
printf("feu1 %c et feu3 %c ",F1,F3);
F2=F4="V";
printf("feu2 %c et feu4 %c ",F2,F4);
usleep(4000);
F1=F3="V";
printf("feu1 %c et feu3 %c ",F1,F3);
F4=F2="R";
printf("feu2 %c et feu4 %c ",F2,F4);
pthread_mutex_unlock(&mutex);
}
pthread_exit(NULL);
}
while(1);
return(0);
}
void VOIE1()
{
if(Capteur1==1 || Capteur3==1)
{F1=F3="V";}
}
void VOIE2()
{
if(Capteur2==1 || Capteur4==1)
{F2=F4="V";}
} |
Partager