Create a new channel that allows senders and receivers to asynchronously exchange messages via an internal intermediary buffer.
This channel’s buffer has a bounded capacity of minimum size 2 messages,
and it must be a power of 2 due to the restrictions of the current MPMC queue type that is used.
minimum_capacity will be rounded up to the next largest power of 2, with a minimum value of 2.
When the number of pending (buffered) messages is larger than the capacity,
the channel is considered full.
Depending on whether a non-blocking or blocking send function is invoked,
future attempts to send another message will either block or return a
until the channel’s buffer is drained by a receiver and space in the buffer becomes available.
Returns a tuple of