Ruby双向字符串缓冲区

时间:2018-05-20 23:40:26

标签: 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

StringIO支持 阅读或写作,但不支持两者。如果我初始化一个新的并写入它,然后尝试从它读取,我将得不到任何东西。有没有办法获得这样一个不需要使用mkfifo或其他东西的普通旧通信流?

1 个答案:

答案 0 :(得分:7)

  

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

您可以阅读刚刚写入的StringIO对象,只需在对象上调用rewind即可。

我认为您正在照顾IO::pipe