source:
benchmark/schedint/upp.cc
@
0dedf756
Last change on this file since 0dedf756 was dc33b5b, checked in by , 5 years ago | |
---|---|
|
|
File size: 582 bytes |
Rev | Line | |
---|---|---|
[9f0b975] | 1 | #include <cstdio> |
2 | ||
3 | #include "bench.h" | |
4 | ||
5 | int argc; | |
6 | char** argv; | |
7 | volatile int go = 0; | |
8 | ||
9 | _Monitor M { | |
10 | uCondition cond; | |
11 | public: | |
12 | void __attribute__((noinline)) call() { | |
13 | cond.signal(); | |
14 | } | |
15 | ||
16 | int __attribute__((noinline)) wait() { | |
17 | go = 1; | |
18 | BENCH( | |
19 | for (size_t i = 0; i < n; i++) { | |
20 | cond.wait(); | |
21 | }, | |
22 | result | |
23 | ) | |
24 | ||
[dc33b5b] | 25 | printf("%g\n", result); |
[9f0b975] | 26 | go = 0; |
27 | return 0; | |
28 | } | |
29 | }; | |
30 | ||
31 | M m; | |
32 | ||
33 | _Task T { | |
34 | void main() { | |
35 | while(go == 0) { yield(); } | |
36 | while(go == 1) { m.call(); } | |
37 | ||
38 | } | |
39 | }; | |
40 | ||
[dc33b5b] | 41 | int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) { |
[9f0b975] | 42 | T t; |
43 | return m.wait(); | |
[dc33b5b] | 44 | } |
Note: See TracBrowser
for help on using the repository browser.