Channels are somewhat like UNIX pipes. Limbo channels are simple to program. All that is required is that two (or more) threads be able to communicate on a common channel. One thread sends data on the channel and another receives it.
If there is no thread ready to receive, the send will block (suspend) until a receiver is ready. If a receiver is ready, but there is no thread ready to send, the receiver blocks until a sender is ready.