# https://gobyexample.com/non-blocking-channel-operations require 'channel' messages = Channel.new signals = Channel.new Channel.select(messages) do |msg, c| case c when messages then puts "received message #{msg}" else puts 'no message received' end end msg = 'hi' messages <- msg #select { #case messages <- msg: # fmt.Println("sent message", msg) #default: # fmt.Println("no message sent") #} Channel.select(messages, signals) do |res, c| case c when messages then puts "received message #{res}" when signals then puts "received signal #{res}" else puts 'no activity' end end