I, too, don’t think that I fully understand the basis from which you speak,
I figured I'd actually answer the OP's question. You see, the OP asked if one thread could read from a socket while another writes to the same socket.
BrowserUk's incredible hostility is completely unwarranted. There are common applications for what the OP asks. Tunnels, for one. Another would be to avoid using select+ioctl to do non-blocking output (which probably doesn't work on Windows). I think IPC::Run does exactly this in some circumstances.