Lecteurs/rédacteurs course code.
[TD_SE.git] / lecteursredacteurs / lecteursredacteurs.c
CommitLineData
6b2a29ce
JB
1#include <unistd.h>
2#include <stdio.h>
3#include <semaphore.h>
4
5static int db = 42;
6static int NbL = 0;
7sem_t mutex;
8sem_t redact;
9
10static void *lecteur(void *arg)
11{
12 while (1) {
13 sem_wait(&mutex);
14 if (NbL == 0)
15 sem_wait(&redact);
16 NbL++;
17 sem_post(&mutex);
18 // lecture de la base
19 sleep(1);
20 printf("lecteur bd=%d\n", db);
21 // fin de l’accès à la base
22 sem_wait(&mutex);
23 NbL--;
24 if (NbL == 0)
25 sem_post(&redact);
26 sem_post(&mutex);
27 }
28}
29
30static void *redacteur(void *arg)
31{
32 while (1) {
33 sem_wait(&redact);
34 // modifier les données de la base
35 db++;
36 printf("redacteur bd=%d\n", db);
37 sleep(2);
38 sem_post(&redact);
39 }
40}
41
42int main()
43{
44
45}