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