Slide 29
Slide 29 text
@counter = 0
def party
puts "party: #{caller.inspect}"
end
def create_fiber
puts ">: #{caller.inspect}"
f = Fiber.new do
puts "fiber: #{caller.inspect}"
@counter += 1
puts "counter: #{@counter}"
party
end.resume
puts "counter: #{@counter}"
puts "<: #{caller.inspect}"
f
end
def bar
create_fiber
end
def foo
bar
end
def callme
puts "callme: #{caller.inspect}"
foo
puts "callme after foo: #{caller.inspect}"
end
puts "counter: #{@counter}"
callme
# party: ["fiber_stack.rb:15:in `block in create_fiber'"]
# >: ["fiber_stack.rb:23:in `bar'", "fiber_stack.rb:27:in `foo'",
"fiber_stack.rb:32:in `callme'",
"fiber_stack.rb:37:in `'"]
# fiber: []
# counter: 1
# counter: 1
# <: ["fiber_stack.rb:23:in `bar'",
"fiber_stack.rb:27:in `foo'",
"fiber_stack.rb:32:in `callme'",
"fiber_stack.rb:37:in `'"]
# callme: ["fiber_stack.rb:37:in `'"]
# callme after foo: ["fiber_stack.rb:37:in `'"]
# counter: 0