Tokio's broadcast module is a mpmc messaging queue.
The terms "mpsc" and "mpmc" refer to how the channels can be used. Breaking down the letters, there are two sides to a channel:
p
is producer, or transmitter/sender. This side sends datac
is consumer, or receiver/reader. This side receives data.
Data only flows one way through a channel. Each side may have a restriction on how many members can be on that side:
s
is single, so this side cannot be cloned. You only have one object that can interact with this side (so only one sender or only one receiver)m
is multiple, so this side can be cloned. Any number of objects can exist that interact with this side (so a bunch of simultaneous senders or receivers)
A mpsc channel can only have one consumer, so only one thread can receive messages at a time, and it can only receive those messages once.
A mpmc channel can have many consumers, so multiple threads can receive messages at once, and a thread can receive a message multiple times (through multiple receivers).
Both can have multiple simultaneous producers.