sub set_positive { lock $a; while (1) { ... } } sub set_zero { lock $a; while (1) { ... } }