class IO::Event::Interrupt
A thread safe synchronisation primative.
def self.attach(selector)
def self.attach(selector) self.new(selector) end
def close
def close @input.close @output.close # @fiber.raise(::Interrupt) end
def initialize(selector)
def initialize(selector) @selector = selector @input, @output = ::IO.pipe @fiber = Fiber.new do while true if @selector.io_wait(@fiber, @input, IO::READABLE) @input.read_nonblock(1) end end end @fiber.transfer end
def signal
def signal @output.write('.') @output.flush end