Je ne trouve pas l'erreur dans ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
// Processus cooperants
// producteur-consommateur avec primitives sleep/wakeup
 
int N = 100; //taille du tampon
int count = 0; // variable partagee par le producteur et le consommateur
 
void producer(void) {
	int item;
 
	while(true) {
		item = produce_item();
		if (count == N) sleep;
		insert_item(item); // place un item dans le tampon
		count = count + 1;
		if (count == 1) wakeup(consumer) ;
	}
}
 
void consumer(void) {
	int item;
 
	while(TRUE) {
		if (count == 0) sleep();
		item = remove_item(); // recupere un item du tampon
		count = count - 1;
		if (count == N-1) wakeup(producer);
		consume_item(item)
	}
}