All the messaging we've talked about so far blocks the client. It's nap time for the client as soon as it calls MsgSend(). The client sleeps until the server gets around to replying.

However, there are instances where the sender of a message can't afford to block.

The mechanism that implements a non-blocking send is called a pulse. A pulse is a tiny message that:

  • can carry 40 bits of payload (an 8-bit code and 32 bits of data)
  • is non-blocking for the sender
  • can be received just like any other message
  • is queued if the receiver isn't blocked waiting for it.