Sha256: 11ada2e7de89ac3b7d1ec09ff7e4ead6671fbebff79370f60393f909e82cbf20

Contents?: true

Size: 492 Bytes

Versions: 2

Compression:

Stored size: 492 Bytes

Contents

require_relative './libev_scheduler_ext'

module Libev
  class Scheduler
    def fiber(&block)
      fiber = Fiber.new(blocking: false, &block)
      unblock(nil, fiber)
      # fiber.resume
      return fiber
    end

    def kernel_sleep(duration = nil)
      block(:sleep, duration)
    end

    def process_wait(pid, flags)
      # This is a very simple way to implement a non-blocking wait:
      Thread.new do
        Process::Status.wait(pid, flags)
      end.value
    end  
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
libev_scheduler-0.2 lib/libev_scheduler.rb
libev_scheduler-0.1 lib/libev_scheduler.rb