-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetj.c
More file actions
41 lines (34 loc) · 678 Bytes
/
Copy pathsetj.c
File metadata and controls
41 lines (34 loc) · 678 Bytes
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
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <setjmp.h>
jmp_buf env_p;
jmp_buf env_c;
jmp_buf env_p2;
int n = 0;
#define MAX_NUM 100*10000
void customer() {
setjmp(env_c);
//printf("i am customer n=%d\n", n);
if (n < 3)
longjmp(env_p, n);
else if (n < MAX_NUM)
longjmp(env_p2, n);
}
void productor() {
if (n == 0) {
setjmp(env_p);
n++;
if (n == 1)
return;
}
setjmp(env_p2);
n++;
//printf("i am productor n=%d\n", n);
if (n < MAX_NUM)
longjmp(env_c, n);
}
int main() {
//printf("i am main\n");
productor();
customer();
return 0;
}