Я ищу несколько StringIO -подобный класс, который позволяет мне писать и читать одновременно из разных частей моей программы.
С одной части программы я хочу написать (добавить) символы в буфер, из другой части, которую я хочу прочитать.Ruby 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
Всякий раз, когда я пишу в буфер, он записывается в текущую позицию. При перемещении позиция перемещается к последним записанным символам.
Что мне нужно, это StringBuffer с двумя отдельными позициями для чтения и записи вместо одного. Что-то вроде этого существует в рубине или мне нужно делать это самостоятельно?
Мутирование общей переменной по потокам не является детерминированным в МРТ. – Anthony