光纤#活着吗?没有定义的

saw*_*awa 5 ruby fiber

我使用ruby1.9.2p180(2011-02-18修订版30909)i686-linux.Fiber#alive?返回一个未定义的错误:

fiber = Fiber.new{puts 'hello'}
fiber.alive?
=> undefined error
Run Code Online (Sandbox Code Playgroud)

其他方法,例如Fiber#resume,Fiber.yield似乎是工作的罚款.怎么了?

顺便问一下,Fiber#resume和之间有什么区别Fiber#transfer

Joh*_*lla 4

你忘了require 'fiber'首先:

f = Fiber.new { puts 'hello' }
  => #<Fiber:0x896109c> 

f.alive?
  # NoMethodError: undefined method `alive?' for #<Fiber:0x896109c>
  #      from (irb):2
  #      from /home/johnf/.rvm/rubies/ruby-1.9.2-rc1/bin/irb:17:in `<main>'

require 'fiber'
  => true 

f.alive?
  => true 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。我没有忘记,我也不知道。文档中没有这么说。它说你需要对“Fiber.current”执行此操作,但对于“Fiber#alive?”却没有这样说。 (2认同)
  • 那么,只有部分 Fiber 方法需要 Fiber,而不是全部 Fiber 方法? (2认同)