Hi -
1. Yes, any arbitrary thread may read any open socket at any time.
2. Yes, any thread that reads a blocking socket will block until there is data to be read.
3. No, one thread blocking on a read will not affect any other thread; nor affect the socket.
4. If there are *multiple* threads blocking, waiting to read from the *same* socket ... that's bad
5. In TCP/IP sockets, you cannot absolutely guarantee that *any* single read will return all the data you expect in a single call. It might take multiple reads to get all the data. This might wreak havoc with your "multiple threads reading/writing to the same socket" scenario if you're not careful.