#include "userlib/syscall.h" #include "userlib/libnachos.h" const int N = 3; int iplein = 0; int ivide = 0; int tab[3]; SemId svide; SemId splein; void producteur() { for(int i = 0; i < 10; i++) { n_printf("batir une information\n"); P(svide); iplein = (iplein + 1) % N; n_printf("communique une information : %d\n", i); tab[iplein] = i; V(splein); } } void consommateur() { for(int i = 0; i < 10; i++) { P(splein); ivide = (ivide +1) % N; n_printf("recevoir une information\n"); int info = tab[ivide]; V(svide); n_printf("exploiter l'information : %d\n", info); } } int main() { svide = SemCreate("producteur", N); splein = SemCreate("consommateur", 0); ThreadId producteurTh = threadCreate("producteur", producteur); ThreadId consommateurTh = threadCreate("consommateur", consommateur); Join(producteurTh); Join(consommateurTh); return 0; }