From: Seth Kurtzberg Date: 2003-03-03T14:07:11+09:00 Subject: More on blocking... Back on the subject of IO and blocking, I have another situation. (These things are occuring in a piece of software processing data sent over the 'net, and they don't reproduce in test cases.) I have a situation where I call select, which shows that there is data available on a socket. I then do a read() call on this socket. The read then takes 10 to 15 seconds to complete. This occurs only occasionally, but it is repeatable, so I'm hopeful that I will be able to get a test case working. My question is, what is the definition of "block", in this context? In fact, this particular call does not block, it eventually completes. What I don't understand is what makes it wait for some particular number of bytes before returning. In the case I've gotten details on, there are 568 bytes read. This is smaller than the MTU and so arrives as one packet (confirmed with tcpdump). It is also possible that there is a threading issue. However, I have trace statements in all threads, and I don't see any activity in any other thread during this 10-15 second pause. -- Seth Kurtzberg M. I. S. Corp. 480-661-1849 seth@cql.com