0
我无法理解,为什么此代码不起作用。 我想要做的是使用光纤模拟同步代码行为。在异步方法恢复光纤
require 'fiber'
require 'eventmachine'
def async_request(url)
f = Fiber.current
Thread.new do
sleep 0.3
puts 'Resuming Fiber'
f.resume('page fetched #{url}')
end
end
def async_get(url)
async_request url
val = Fiber.yield
return val
end
EM.run do
Fiber.new do
puts 'Fiber Started'
page = async_get('http://www.whatever.com')
puts page
end.resume
end
当我运行此代码,输出为:
$ ruby fiber_poc.rb
Fiber Started
Resuming Fiber
,纤维是再也没有恢复。 你能解释我该怎么做?
谢谢你们
感谢@ fl00r。很好的接收。为什么线程无法使用?不管怎么说,还是要谢谢你 ! – CHAPa
您不能在线程中使用Fibers – fl00r