Skip to content

Instantly share code, notes, and snippets.

@neektza
Last active April 14, 2017 17:44
Show Gist options
  • Save neektza/459a749234c15855c668d40a77903c4a to your computer and use it in GitHub Desktop.
Save neektza/459a749234c15855c668d40a77903c4a to your computer and use it in GitHub Desktop.
require 'fiber'
require_relative 'add_one_task'
scheduled = []; performed = []
consumers = []; scheduler = nil
producer = Fiber.new do
5.times do
scheduled.push AddOneTask.new
scheduler.transfer
end
end
5.times do
consumers << Fiber.new do
task = scheduled.pop
performed << task.perform unless task.nil?
Fiber.yield
end
end
scheduler = Fiber.new do
consumers.each do |c|
c.resume
producer.transfer
end
end
producer.resume
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment