用异步版本+光纤替换Ruby IO库

用异步版本+光纤替换Ruby IO库,ruby,asynchronous,nonblocking,fibers,Ruby,Asynchronous,Nonblocking,Fibers,是否有可能用不同的实现替换所有ruby IO类,在幕后使用reactor和fibers?我的意思是,事实上,所有使用原生ruby IO的库都将按预期工作,因为对IO的所有调用都将使用光纤包装,它们将等待请求的操作。但在等待连接/文件中的数据可用时,ruby将服务于其他io操作。是否可行?是的,只是猴子补丁。工作量大吗?是的,但是如果你真的想要,就去做吧。如果你不知道如何使用猴子补丁IO,那就把它作为你的问题吧 例如,要覆盖读取,请执行以下操作: 可能吗?是的,只是猴子补丁。工作量大吗?是的,但是

是否有可能用不同的实现替换所有ruby IO类,在幕后使用reactor和fibers?我的意思是,事实上,所有使用原生ruby IO的库都将按预期工作,因为对IO的所有调用都将使用光纤包装,它们将等待请求的操作。但在等待连接/文件中的数据可用时,ruby将服务于其他io操作。

是否可行?是的,只是猴子补丁。工作量大吗?是的,但是如果你真的想要,就去做吧。如果你不知道如何使用猴子补丁IO,那就把它作为你的问题吧

例如,要覆盖读取,请执行以下操作:


可能吗?是的,只是猴子补丁。工作量大吗?是的,但是如果你真的想要,就去做吧。若你们不知道如何修补IO,那个就把它作为你们的问题。问题是关于可能性的。谢谢你的回答。当然。我会回答的。我想我必须编写c扩展,例如使用libev+libeio,在本机ruby中不可能进行异步io。@h3x3d:是的。请稍等,让我看看我的RUby手册。@h3x3d:看看IOreadpartial、IOread\u nonblock和IOwrite\u nonblock的文档。
class IO
  def read(count = -1)
    #Some fiber code here...
  end
end