Ruby双向字符串缓冲区

Ruby双向字符串缓冲区,ruby,io,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支持读或写,但不能同时支持

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之类的东西

StringIO支持读或写,但不能同时支持读和写

您可以读取刚刚写入的StringIO对象,只需调用对象上的rewind

我想你在照顾我

StringIO支持读或写,但不能同时支持读和写

您可以读取刚刚写入的StringIO对象,只需调用对象上的rewind


我想您正在考虑。

可能的重复:来回传递内存对象是一回事,但我需要使用通常的读/写方法在两端公开一个标准的Ruby流接口。在队列周围编写包装器是一种选择,但它看起来像是stdlib中可能存在的东西,可能存在重复:来回传递内存对象是一回事,但我需要使用通常的读/写方法在两端公开一个标准Ruby流接口。在队列周围编写包装器是一种选择,但它看起来像是stdlib中可能有的东西,我将在这里查看IO::pipe。StringIO会在您更新基础字符串时自动倒带,但倒带不是我想要的,因为这样每次写入之后读取都会重新开始,管道似乎正是我需要的!我将检查IO::pipe。StringIO会在您更新基础字符串时自动倒带,但倒带不是我想要的,因为这样每次写入之后读取都会重新开始,管道似乎正是我需要的!