Ruby双向字符串缓冲区

xan*_*ood 1 ruby io

ruby是否具有本机双向字符串缓冲类?我希望能够做到这样的事情:

buf = Buffer.new

Thread.new do
  while true
    # do some work
    buf << result
  end

  buf.close
end

Thread.new do
  until buf.eof?
    result = buf.readline
    # do some work
  end
end
Run Code Online (Sandbox Code Playgroud)

StringIO支持无论是读或写,但不能同时使用.如果我初始化一个新的并写入它,然后尝试从它读取,我将得不到任何东西.有没有办法得到像这样的普通旧通信流,不需要使用mkfifo或什么?

Art*_*iev 7

StringIO支持读取或写入,但不支持两者.

您可以从刚写入的StringIO对象中读取,只需调用rewind您的对象即可.

我想你正在关注IO :: pipe.