我正在创建一个流式事件机器服务器。我担心避免阻塞 IO 或做任何其他事情来破坏事件循环。
根据我的阅读,ruby 的非阻塞 IO 可用于以非阻塞方式流式传输文件,或者我可以调用 next_tick,但我有点不清楚这些方法中哪种更可取。
部分问题是我没有找到对 ruby 中非阻塞 IO 库函数的很好解释。
简短版本:假设一个长期存在的网络 IO 操作,每个文件有几个挂钟分钟的流式传输,传输,在 eventmachine 中执行此操作而不会弄乱事件循环的最佳方法是什么?
while 1 do
file.read do |bytes|
@conn.send_data bytes
end
end
我知道上面的代码会阻塞,我想知道该放什么。此外,我不能按原样使用作为 eventmachine 一部分的 FileStreamer 类,因为我需要在读取数据之后但在发送数据之前对其进行操作。