2012-03-04 14 views
3

、繊維とフェイRubyの繊維とフェイ

require "faye" 
require "em-synchrony" 
require "hiredis" 
require 'redis' 
require 'redis/connection/synchrony' 

faye = Faye::Client.new 'http://localhost:9292/faye' 
redis = Redis.new 

EM.synchrony do 

    faye.subscribe('/event_1') do |message| 
    Fiber.new do 
     puts "Event 1 start" 
     user_id = redis.hget 'myhash', message.client_id 
     puts "Event 1 finish" 
    end.resume 
    end 

    faye.subscribe('/event_2') do |message| 
    Fiber.new do 
     puts "Event 2 start" 
     user_id = redis.hget 'myhash', message.client_id 
     puts "Event 2 finish" 
    end.resume 
    end # subscribe 

end #EM.synchrony 

event_1は、その横にevent_2(非常に小さい間隔)
私はそれを実行し、イベントの解雇する場合、最初に来ます。私はいつもこの出力を持っています:

Event 1 start 
Event 2 start 
Event 2 finish 

それはすべてです。
イベント1はどこで終了しますか?
私は間違っていますか?

UPD:私が非同期を削除すると、require 'redis/connection/synchrony'はすごくうまくいきます。しかし、私はこの非同期が必要です。

ルビー-1.9.2-P290 [x86_64版]

答えて

1

は答えが同調性のConnectionPoolを使用することでした。

関連する問題