Channel enables concurrent communication between fibers.
They allow communicating data between fibers without sharing memory and without having to worry about locks, semaphores or other special structures.
channel = Channel(Int32).new spawn do channel.send(0) channel.send(1) end channel.receive # => 0 channel.receive # => 1
NOTE Although a
Channel(Nil) or any other nilable types like
Channel(Int32?) are valid
they are discouraged since from certain methods or constructs it receiving a
nil as data
will be indistinguishable from a closed channel.
#parallel(*, fibers : Int32 = System.cpu_count.to_i)
TODO better error handling * See