in reply to How to pass sockets to different threads?

I remember reading in Apache's docs that it preforks several children, has them all try to lock onto a semaphore - the one that succeeds takes a connection and another one child takes its place as listener. If you really need Select functionality I also suggest forking and having a separate IO::Select object for each child ( as you can see I've gone fork hyper ).