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
https://www.geeksforgeeks.org/ipc-using-message-queues/
mq_send
, mq_receive