class Channel(T)

Overview

A 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.

Defined in:

lib/concurrency_util.cr

Instance Method Summary

Instance Method Detail

def |(other : Channel(K)) : Channel(T | K) forall K #

[View source]
def partition(&predicate : T -> Bool) : Tuple(Channel(T), Channel(T)) #

[View source]