my $cond : shared; $thread1 = async { { lock($cond); cond_wait($cond) until $cond } # do stuff. }; $thread2 = async { # do stuff. { lock($cond); $cond = "proceed"; cond_signal($cond) } };