The user application calls the probe routine of the TCPMPL to check whether there is any message that can be received without blocking. The probe itself should be non-blocking. Non-blocking means that the probe function should not block for any purpose. It should return back to the user as soon as possible. There will be N-1 communication channels from which a particular process can receive data. Data can come from one or more of the communication channels. It is the responsibility of the TCPMPL to find out whether there is any data that is available from one of the communication channels. If there is any data that is available from any communication channel, it has to tell the user application the size of the message that is available and the identity of the sender process. For this, a synchronous I/O multiplexer has been used to find out whether there is any data available from any communication channel. Figure 4 shows the Synchronous I/O multiplexer. The multiplexer uses UNIX system calls to discover if there is any data that can be received without blocking. The system call returns success for the following conditions:

Figure 4: Synchronous I/O Multiplexer for the process with id number X
which multiplexes the data from the N-1 communication channels.
Once the multiplexer finds out that the peer has closed the connection, it removes that communication channel from the set of channels to be probed for data. There is also a timeout factor involved in the multiplexer. This is the time for which the synchronous I/O multiplexer will wait to find out whether there is any data that is available from any communication channel.