#include #include #include monitor M {}; void notcalled( M & mutex m ) { abort(); } void test( M & mutex m ) { int i = 0; sout | "Starting"; when( false ) waitfor( notcalled, m ); sout | "Step" | i++; waitfor( notcalled, m ); or else { sout | "else called"; } sout | "Step" | i++; when( true ) waitfor( notcalled, m ); or when( true ) else { sout | "else called"; } sout | "Step" | i++; when( false ) waitfor( notcalled, m ); or when( true ) else { sout | "else called"; } sout | "Step" | i++; when( false ) waitfor( notcalled, m ); or when( false ) else { sout | "else called"; } sout | "Done"; } int main() { M m; test(m); }