#include "locks.hfa" fast_block_lock f; fast_cond_var( fast_block_lock ) f_c_f; condition_variable( fast_block_lock ) c_f; unsigned int num_times = 10000; thread T_F_C_F_WS1 {}; void main( T_F_C_F_WS1 & this ) { for (unsigned int i = 0; i < num_times; i++) { lock(f); if(empty(f_c_f) && i != num_times - 1) { wait(f_c_f,f); }else{ notify_one(f_c_f); unlock(f); } } } thread T_C_F_WS1 {}; void main( T_C_F_WS1 & this ) { for (unsigned int i = 0; i < num_times; i++) { lock(f); if(empty(c_f) && i != num_times - 1) { wait(c_f,f); }else{ notify_one(c_f); unlock(f); } } } int main(int argc, char* argv[]) { int variation = 0; switch (argc) { case 3: num_times = atoi(argv[2]); case 2: variation = atoi(argv[1]); case 1: break; default: break; } processor p[1]; if (variation == 0) { T_F_C_F_WS1 t[2]; }else if (variation == 1) { T_C_F_WS1 t[2]; } }