#!/usr/bin/perl -w use threads; use threads::shared; my $locked : shared; lock( $locked ); print "locked(main)\n "; $thr = async{ test() }; print "starting\n"; $wait = cond_timedwait( $locked, time() + 5 ); print "result: timeout\n" if ( !defined( $wait )); print "done\n"; exit; sub test { print "started. \n"; lock( $locked ); print "locked(test)\n "; sleep( 10 ); print "exiting\n"; cond_signal( $locked ); } #### locked(main) starting started. locked(test) exiting result: timeout done