repositories
/
TD_SE.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
blame
|
history
|
raw
|
HEAD
Lecteurs/rédacteurs course code.
[TD_SE.git]
/
lecteursredacteurs
/
lecteursredacteurs.c
1
#include <unistd.h>
2
#include <stdio.h>
3
#include <semaphore.h>
4
5
static int
db
=
42
;
6
static int
NbL
=
0
;
7
sem_t mutex
;
8
sem_t redact
;
9
10
static 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
30
static 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
42
int
main
()
43
{
44
45
}