我正在评估Ruby EventMachine(以及类似的非阻塞框架,如Cramp)和Node.js.我曾经使用过Node,但从未使用过EventMachine。 Ryan Dahl鼓励的一个想法是,javascript中的库生态系统必须是类似的非阻塞才能促进这一点。这是Node从头开始开发的部分原因。
我的问题是,你可以在没有阻止的情况下在Ruby中取得进展吗?我的假设是单独使用EventMachine通常不足以构建完整的Web应用程序堆栈。如果是这样,Ruby中的其他哪些库会促进非阻塞IO(即数据库/文件系统/ http访问)?
答案 0 :(得分:2)
您应该查看Ilya Grigorik的大量工作以及他在Synchrony和Goliath上的工作。
它们可以帮助您以命令式样式编写具有回调的异步代码(看起来是同步的)。
答案 1 :(得分:1)
正如@Holder刚才指出的那样,这里有一个非阻塞库列表可以与EventMachine一起使用:
https://github.com/eventmachine/eventmachine/wiki/Protocol-Implementations