[][src]Module tokio::sync::mpsc

This is supported on feature="sync" and feature="sync" only.

A multi-producer, single-consumer queue for sending values across asynchronous tasks.

Similar to std, channel creation provides Receiver and Sender handles. Receiver implements Stream and allows a task to read values out of the channel. If there is no message to read, the current task will be notified when a new value is sent. Sender implements the Sink trait and allows sending messages into the channel. If the channel is at capacity, the send is rejected and the task will be notified when additional capacity is available. In other words, the channel provides backpressure.

Unbounded channels are also available using the unbounded_channel constructor.

Disconnection

When all Sender handles have been dropped, it is no longer possible to send values into the channel. This is considered the termination event of the stream. As such, Receiver::poll returns Ok(Ready(None)).

If the Receiver handle is dropped, then messages can no longer be read out of the channel. In this case, all further attempts to send will result in an error.

Clean Shutdown

When the Receiver is dropped, it is possible for unprocessed messages to remain in the channel. Instead, it is usually desirable to perform a "clean" shutdown. To do this, the receiver first calls close, which will prevent any further messages to be sent into the channel. Then, the receiver consumes the channel to completion, at which point the receiver can be dropped.

Modules

errorfeature="sync" and feature="sync"

Channel error types

Structs

Receiverfeature="sync" and feature="sync"

Receive values from the associated Sender.

Senderfeature="sync" and feature="sync"

Send values to the associated Receiver.

UnboundedReceiverfeature="sync" and feature="sync"

Receive values from the associated UnboundedSender.

UnboundedSenderfeature="sync" and feature="sync"

Send values to the associated UnboundedReceiver.

Functions

channelfeature="sync" and feature="sync"

Create a bounded mpsc channel for communicating between asynchronous tasks, returning the sender/receiver halves.

unbounded_channelfeature="sync" and feature="sync"

Create an unbounded mpsc channel for communicating between asynchronous tasks.