Channels for ruby
A complete implementation of channels for Ruby, including size and close.
How?
The usual gem insall channel
, or gem channel
in your Gemfile
.
require 'channel'
c = Channel.new
go -> { c << 'Hello, world!' }
puts c.recv
Why?
While some packages already exist, many fail at providing a thorough
implementation, often limited to send
/recv
, and most critically, all
missing close
support. A complete implementation makes channels much more
useful, as most patterns rely much more details than simply send
/recv
.
To prove this point and to serve as a nice tutorial anyway, some examples ported over from Go by example are included in examples.
- channels
- channel buffering
- channel synchronization
- channel direction
- select
- timeouts
- non-block channel operations
- closing channels
- range over channels
License
MIT