Ruby StringIO用于并发读写

时间:2016-08-31 15:09:00

标签: ruby string buffer

我正在寻找一些StringIO - 类似的课程,这样我就能从课程的不同部分同时写作和阅读。
从程序的一部分我想写入(追加)字符到缓冲区,从另一部分我想读它们。

StringIO的问题如下:

buffer = StringIO.new
buffer.write "Foobar"      # Write to the buffer
buffer.rewind              # Move the pointer to beginning
buffer.getc                #=> F
buffer.getc                #=> o

buffer.write("something")  # Write more to the buffer
buffer.string              #=> Fosomething
buffer.getc                #=> nil
buffer.pos                 #=> 11

每当我写入缓冲区时,它都会被写入当前位置。 Aterwards将位置移动到最后写入的字符。

我需要的是一个StringBuffer,它有两个独立的位置用于读写,而不是只有一个。在ruby中是否存在这样的事情,或者我自己必须做什么?

2 个答案:

答案 0 :(得分:1)

您应该考虑使用Queue。如果你不需要线程安全,那么一个简单的数组也可能没问题。

答案 1 :(得分:0)

如果您的程序是单线程的,请尝试协程,也称为块。

def do_stuff
  yield rand(100)
end

100.times do
  do_stuff { |response| puts response }
end