Message passing

Blocking primitives (sync)

  • sender blocked until message recv
  • recver blocked until message arrived

Non-blocking primitives (async)

  • sender resume op after sending, donneed wait for recv
  • recv receives msg if avail / indicates msg not ready, continue
  • not truly async, sent messages are buffered. When buffer is full we have to wait for buffer to flush before we can send again.

implementation with

mq_send, mq_receive