0
def index
  p "INDEX, #{Fiber.current.object_id}" # <- #1
  EventMachine.run {
    http = EventMachine::HttpRequest.new('http://google.com/').get :query => {'keyname' => 'value'}

    http.errback { p "Uh oh, #{Fiber.current.object_id}"; EM.stop } # <- #2
    http.callback {
      p "#{http.response_header.status}, #{Fiber.current.object_id}" # <- #3
      p "#{http.response_header}"
      p "#{http.response}"

      EventMachine.stop
    }
  }

  render text: 'test1'
end

このコードでは、 、、行で異なるFiberID を取得することを期待していました。しかし、すべてのファイバー オブジェクトの ID は同じでした。試してみましたが、やはり同じ結果でした。 私は何を誤解していますか?そのコードは非同期でも実行されますか?#1#2#3Thread.current.object_id

PS私が使用ruby 2.0していて、コードが実行されていますrails4

4

2 に答える 2