新手问题 Ruby 能否提供 Node.js 风格的 IO 操作

lilijreey · 2016年07月31日 · 最后由 nouse 回复于 2016年08月02日 · 3099 次阅读

大家好,目前需要非阻塞的 read 文件,在 Node 中可以使用 .on 方法设置回调。请问在 Ruby 中有类似的方法吗? 个人认为 Ruby 急需在内部实现 Ractor 模式!!!

补充:这两天有看了一下 Node, 其实个人任务,Nodejs 的唯一的亮点就是异步 iO. JS 的语法和 Ruby 比起来就是渣渣。如果 Ruby 把 NodeJS 的 IO 特性包含进来,回调使用 block 真是完美了>>

eventmachine

#1 楼 @qinix 没有找到失陪 IO 对象的函数。EM 虽然是非阻塞的但是没有找到对 File 对象的操作

先搞明白什么是 IO 非阻塞操作

#3 楼 @nouse 笑尿了,给 Linux 写过驱动。你说懂否

做个 libev 的 binding?

#4 楼 @lilijreey 所以你要知道到底想要什么,对于网络这种高延迟的,异步 IO 才有意义。

对于本地读取文件这么短的时间,你还想要操作系统新开线程做两次切换就没有意义了。

libuv 的 Ruby 绑定有,但是效果应该很差

Ruby 中的文件 IO 操作不会阻塞其他线程

#7 楼 @nouse 我需要读取 fifo 这个也算是本地文件吧。没有回调真心很难写

#8 楼 @luikore 不知道为什么,不管是基础网络编程模型还是各种 binding 都不如 python

#11 楼 @flowerwrong 你可否举几个 python 的栗子,然后我告诉你怎么写代码

#12 楼 @luikore 哇塞,我也想参加大神教你写代码系列

另外我没有在调侃,我是真心的,吕神这么主动想写代码是件不容易的事。我忍住这么久没在这个帖子上吐槽就是不想吵了

#12 楼 @luikore 抓住机会,跟吕神学习写代码!

#9 楼 @lilijreey 读写 fifo 搜搜不就有了 https://github.com/shurizzle/ruby-fifo

进程间通信有好多种,为何不多试试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号