use Win32::Mutex; $mut = Win32::Mutex->new(0); ... fork_the_children; ... #and then in the children use ... $mut->wait(); $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef); $mut->release(); ... #!!! you should preven the mutex from being destroyed by # any of the children. It should only be destroyed by the # main thread and only after all children finished !!! ... # just before a child thread finishes bless $mut, 'do not destroy'; }