main: shared a1_ready := semaphore(0) shared b1_ready := semaphore(0) create_thread(thread_a) create_thread(thread_b) create_thread(thread_c) thread_a: statement a1 signal(a1_ready) thread_b: wait(a1_ready) statement b1 signal(b1_ready) thread_c: wait(b1_ready) statement c1