In reply to myselfprakhar:
Mailbox is similar to a queue, which allows only atomic operations. They can be bounded/unbounded. Bounded means it can be configured to fix size. Mailbox size can be configured to fix or unbounded while queue size is unbounded. Get/put task is used to suspend a bounded mailbox. That’s why mailbox is used more for communication between threads. FIFO can be implemented using mailbox. While FIFO or LIFO can be implemented using queue.