in reply to Threads, Forks, or Nothing?

Simply put, don't use threads. If you are at all hesitant about using them, there is a depressingly large chance that you will subtly screw up somewhere and cause Perl to coredump at inoppertune moments. (Murphy is watching, after all!) What I would probably do is actually have two servers: one that reads from the interface and writes to a single pipe or socket, and one (fork()ing) server that reads from that pipe/socket and multiplexes it out to all the consumers. That way, you get safe "multithreading" and no worries about races or competition for the interface.