class Channel(T)
- Channel(T)
- Reference
- Object
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:
stdlib/channel.crInstance Method Summary
- #try_receive? : T | Nil
-
#try_send(value : T) : Bool
Sends a value to the channel if it has capacity.
-
#try_send?(value : T) : Bool
Sends a value to the channel if it has capacity.
Instance Method Detail
Sends a value to the channel if it has capacity. It doesn't block if the channel doesn't have capacity.
Returns true
if the value could be deliviered immediately, false
otherwise.
Raises ClosedError
if the channel is closed or closes while waiting on a full channel.
Sends a value to the channel if it has capacity. It doesn't block if the channel doesn't have capacity.
Returns true
if the value could be deliviered immediately, false
otherwise, also when the channel is closed.