mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
36 lines
581 B
YAML
Executable file
36 lines
581 B
YAML
Executable file
prelude: |
|
|
def make_link(previous)
|
|
Fiber.new do
|
|
while message = previous.resume
|
|
Fiber.yield(message)
|
|
end
|
|
end
|
|
end
|
|
|
|
def make_chain(length = 1000, &block)
|
|
chain = Fiber.new(&block)
|
|
|
|
(length - 1).times do
|
|
chain = make_link(chain)
|
|
end
|
|
|
|
return chain
|
|
end
|
|
|
|
message = "Hello World!"
|
|
|
|
chain = make_chain do
|
|
while true
|
|
Fiber.yield(message)
|
|
end
|
|
end
|
|
benchmark:
|
|
make_chain: |
|
|
make_chain(100) do
|
|
while true
|
|
Fiber.yield(message)
|
|
end
|
|
end
|
|
resume_chain: |
|
|
chain.resume
|
|
loop_count: 5000
|