This library implements the channel model of interprocess communication.

Channels are one model of interprocess communication that has its roots in communicating sequential process (CSP). With channels it is possible to realize processing graphs, that can be used for more than one execution, compared to a graph that is setup with futures. Channels consist of a sending and a receiving part. Each receiver has an attached process that gets executed when a value is send through. It is possible to split, zip, zip_with, or merge channels. Each processing node is associated with a process.


  • channel

    Creates a pair that consists of a sender and a receiver

    (template function)
  • join

    Creates a future that joins all passed arguments. This function is deprecated and it will soon be removed. Please use instead of zip_with

    (template function)
  • merge

    Creates a receiver that merges all passed arguments. This function is deprecated and will be removed soon. Please instead merge_channel<unordered_t>.

    (template function)
  • merge_channel

    Creates a channel that merges all passed arguments

    (template function)
  • process

    Describes a process that gets executed whenever a value is passed into the channel

    (policy class)
  • receiver

    Implements the receiving part of a CSP channel

    (template class)
  • sender

    Implements the sending part of a CSP channel

    (template class)
  • zip

    It zips the values in step from all upstream receivers. (The functionality has changed after release 1.2.0!)

    (template function)
  • zip_with

    Creates a channel that zips multiple channels into a single one

    (template function)