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版]