我所阅读和体验过的所有东西(基于Tornado的应用程序)都让我相信ePoll是基于Select和Poll的网络的自然替代品,特别是对于Twisted.这让我变得偏执,对于更好的技术或方法而言,这是非常罕见的.
阅读epoll和替代品之间的几十个比较表明,epoll显然是速度和可扩展性的支柱,特别是它以线性方式扩展,非常棒.那说,处理器和内存利用率如何,epoll仍然是冠军?
反应堆模式在维基百科中解释,它有点过于抽象.你能用更具体的方式描述这种模式吗?理想情况下,使用代码片段或描述反应器模式的一些应用的高级类图.
谁能解释反应堆模式和前驱模式之间的区别?我知道在reactor-pattern中,操作是同步的,并且在proactor中它们是异步的,并且在反应器中操作由处理器完成,处理器由反应器移交给客户端.(如果我错了,请纠正我)
另外,在故障安全的情况下使用哪种模式,哪些模式用于快速失败?
尝试在我的工作示例中实现Celluloid 异步似乎表现出奇怪的行为.
这里我的代码看起来
class Indefinite
include Celluloid
def run!
loop do
[1].each do |i|
async.on_background
end
end
end
def on_background
puts "Running in background"
end
end
Indefinite.new.run!
Run Code Online (Sandbox Code Playgroud)
但是当我运行上面的代码时,我从未看到过" 在后台运行 "
但是,如果我睡觉,代码似乎工作.
class Indefinite
include Celluloid
def run!
loop do
[1].each do |i|
async.on_background
end
sleep 0.5
end
end
def on_background
puts "Running in background"
end
end
Indefinite.new.run!
Run Code Online (Sandbox Code Playgroud)
任何的想法?为什么在上述两个场景中存在这样的差异.
谢谢.