#include #include #include #include #include "../bench.h" volatile int go = 0; condition c; monitor M {} m1, m2, m3, m4; void __attribute__((noinline)) call( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) { signal( c ); } void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) { go = 1; for ( times ) { wait( c ); } } thread T {}; void main( T & ) { while ( go == 0 ) { yield(); } // waiter must start first BENCH( for ( times ) { call( m1, m2, m3, m4 ); }, result ) printf( "%g\n", result ); } int main( int argc, char * argv[] ) { BENCH_START() T t; wait( m1, m2, m3, m4 ); } // Local Variables: // // tab-width: 4 // // End: //