示例代码来自here:defhttp_get(url)f=Fiber.currenthttp=EventMachine::HttpRequest.new(url).get#resumefiberoncehttpcallisdonehttp.callback{f.resume(http)}http.errback{f.resume(http)}returnFiber.yieldendEventMachine.rundoFiber.new{page=http_get('http://www.google.com/')puts"Fetchedpage:#{page.response_head
我使用ruby1.9.2p180(2011-02-18修订版30909)i686-linux。Fiber#alive?返回未定义的错误:fiber=Fiber.new{puts'hello'}fiber.alive?=>undefinederror其他方法,例如Fiber#resume、Fiber.yield似乎工作正常。怎么了?顺便问一下,Fiber#resume和Fiber#transfer有什么区别? 最佳答案 你忘了先require'fiber':f=Fiber.new{puts'hello'}=>#f.alive?#N
我试图理解以下代码片段的行为。我特别关注Fiber#transfer方法。require'fiber'fiber2=nilfiber1=Fiber.newdoputs"InFiber1"#3fiber2.transfer#4endfiber2=Fiber.newdoputs"InFiber2"#1fiber1.transfer#2puts"InFiber2again"#5Fiber.yield#6puts"Fiber2resumed"#10endfiber3=Fiber.newdoputs"InFiber3"#8endfiber2.resume#0fiber3.resume#7fibe