[英]Simple neverblock example doesn't work
我正在嘗試使用“ neverblock”做某事,但似乎無法使其正常工作。
我的期望:睡眠阻塞不會減慢整個過程。 我希望看到5次“ bla”具有基本相同的時間戳。
紅寶石:
$ ruby --version
ruby 1.9.2dev (2010-03-31 trunk 27123) [x86_64-darwin10.2.0]
碼:
require "neverblock"
fiber_pool = NeverBlock::Pool::FiberPool.new(25)
5.times do
fiber_pool.spawn do
puts "bla @ #{Time.now}"
sleep 1
end
end
結果:
$ ruby test.rb
Using Neverblock
bla @ 2010-04-07 11:00:28 -0400
bla @ 2010-04-07 11:00:29 -0400
bla @ 2010-04-07 11:00:30 -0400
bla @ 2010-04-07 11:00:31 -0400
bla @ 2010-04-07 11:00:32 -0400
您需要“凍結”您的時間。
當您調用Time.now
它將始終執行自身
time = Time.now
5.times do
fiber_pool.spawn do
puts "bla @ #{time}"
sleep 1
end
end
http://ruby-doc.org/core-1.9/classes/Fiber.html
光纖是使用暫掛和恢復進行調度的-由於在此示例中您都不使用它們,因此代碼將按順序運行。 據我所知,NeverBlock結合使用FiberPool以及光纖和事件感知數據庫驅動程序,可以根據需要智能地掛起和恢復光纖以處理I / O事件。
做這個:
require "neverblock"
require "eventmachine"
fiber_pool = NeverBlock::Pool::FiberPool.new(5)
EM::run do
5.times do
fiber_pool.spawn do
puts "bla @ #{Time.now}"
EM.add_timer(1) do
EM.stop
end
end
end
end
它應該工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.