зеркало из https://github.com/github/ruby.git
37 строки
581 B
YAML
Executable File
37 строки
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
|