#include "Kernel.h" #include #include Thread Ping,Pong; Semaphore Aping,Apong; int echange = 0; Semaphore Sync; THREAD void pingpong() { int i, j; ThreadSolo(); printf("\n %d debute \n ", MySelf()); ThreadTutti(); for(i=0;i<100;i++) { if ( MySelf()== Ping) { SemaphoreP(Aping); for(j=0;j<=10000;j++); echange++; SemaphoreV(Apong); } else { SemaphoreP(Apong); for(j=0;j<=10000;j++); SemaphoreV(Aping); } for(j=0;j<10000;j++); } ThreadSolo(); printf ("\n %d arrete les echanges \n", MySelf()); ThreadTutti(); } THREAD void bavard() {int j,i; j=0; for(i=0;i<100000000;i++)j=j+1; ThreadSolo(); printf(" \n Bavard %d a tourne %d fois \n ", MySelf(),i); ThreadTutti(); for(i=0;i<20;i++) { for(j=0;j<1000000;j++); ThreadSolo(); printf(" \n Bavard %d joue %d fois \n ", MySelf(),i); ThreadTutti(); } ThreadSolo(); printf ("\n %d arrete les echanges \n ", MySelf()); ThreadTutti(); SemaphoreV(Sync); } THREAD void ADAM() { int j,i; for(j=0;j<=10000;j++); for(i=0;i<20;i++) { ThreadSolo(); printf("\n Adam %d joue %d fois \n ", MySelf(),i); ThreadTutti(); for(j=0;j<=100000;j++); } for(;;); }