sub event_handler { if(time_taking_task()) { #socketpair(MY, HIS) pipe(MYIN, THROUT); pipe(TRHIN, MYOUT); check_for_reading(MYIN, \&info_from_thead); launch_thread(\&my_thread); } } sub info_from_tread { sysread(MYIN, $var); } sub my_thread { # do some long work print THROUT "Give more data\n"; sysread(THRIN, $data); }