The Channels library is an extended implementation of a managed signals/slots
system and is used for communication between threads.
The library includes types like channel, buffered_channel,
aggregating_channel and helpers for working with them.
The class channel implements a traditional signals/slots system
(like Qt signals) where some set of callbacks are connected to the channel and
callbacks are called when the transmitter sent the value to the channel.
The class buffered_channel is similar to channel but it stores the last
value sent.
Unlike std::future, buffered_channel allows to pass more than one value.
The class aggregating_channel is similar to channel but it passes returned
values from callbacks back to the transmitter (like Boost.Signals2).
If your program uses executors, this library can be easily integrated with them.