#include #include #include #include #include "bench.h" int argc; char** argv; volatile int go = 0; condition c; monitor M {}; M m1; void __attribute__((noinline)) call( M & mutex a1 ) { signal(c); } int __attribute__((noinline)) wait( M & mutex a1 ) { go = 1; BENCH( for (size_t i = 0; i < n; i++) { wait(c); }, result ) printf("%llu\n", result); go = 0; return 0; } thread T {}; void ^?{}( T & mutex this ) {} void main( T & this ) { while(go == 0) { yield(); } while(go == 1) { call(m1); } } int main(int margc, char* margv[]) { argc = margc; argv = margv; T t; return wait(m1); }