#include #include const unsigned int num_times = 10000; single_acquisition_lock m1, m2, m3, m4, m5; thread T_Mutex {}; bool insideFlag = false; int count = 0; void main( T_Mutex & this ) { for (unsigned int i = 0; i < num_times; i++) { mutex ( m1 ) count++; mutex ( m1 ) { assert(!insideFlag); insideFlag = true; assert(insideFlag); insideFlag = false; } } } thread T_Multi {}; void main( T_Multi & this ) { for (unsigned int i = 0; i < num_times; i++) { mutex ( m1 ) { assert(!insideFlag); insideFlag = true; assert(insideFlag); insideFlag = false; } mutex ( m1, m2, m3, m4, m5 ) { assert(!insideFlag); insideFlag = true; assert(insideFlag); insideFlag = false; } mutex ( m3, m1 ) { assert(!insideFlag); insideFlag = true; assert(insideFlag); insideFlag = false; } mutex ( m1, m2, m4 ) { assert(!insideFlag); insideFlag = true; assert(insideFlag); insideFlag = false; } mutex ( m1, m3, m4, m5 ) { assert(!insideFlag); insideFlag = true; assert(insideFlag); insideFlag = false; } } } int main() { processor p[10]; printf("Start Test: single lock mutual exclusion\n"); { T_Mutex t[10]; } printf("End Test: single lock mutual exclusion\n"); printf("Start Test: multi lock deadlock/mutual exclusion\n"); { T_Multi t[10]; } printf("End Test: multi lock deadlock/mutual exclusion\n"); }