2016-08-31 5 views
2

StringIO - 내 프로그램의 다른 부분에서 동시에 읽고 쓸 수있는 비슷한 클래스를 찾고 있습니다.
프로그램의 한 부분에서 버퍼에 문자를 쓰고 싶습니다. 다른 부분에서 읽고 싶습니다. 내가 버퍼에 기록 할 때마다Ruby 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 

, 그것은 현재의 위치에 기록됩니다

StringIO의 문제점은 다음과 같다. Aterwards 위치는 마지막으로 기록 된 문자로 이동합니다.

내가 필요로하는 것은 단 하나가 아닌 읽기와 쓰기를위한 두 개의 별도 위치가있는 StringBuffer입니다. 루비에 이와 같은 것이 있거나 아니면 혼자서해야합니까?

+0

공유 변수를 쓰레드로 변경하는 것은 MRI에서 비 결정적입니다. – Anthony

답변

1

Queue을 사용해야합니다. 스레드 안전성이 필요 없다면 간단한 배열도 괜찮을 것입니다.

+0

대기열을 사용하는 것이 좋습니다. 나는 그것을 시도 할 것이다. – 0xAffe

+0

다른 사람들에게 좋은 방법 일 수 있기 때문에 나는이 대답을 받아 들일 것이다. 나는 통역을하고 있으며 때로는 통역사가 더 많은 의견을 기다리고 있습니다. 이 경우 나는 사용자에게 더 많은 입력을 요구합니다. 대기열이 비어 있으면 읽기 스레드가 죽기 때문에 대기열이 작동하지 않습니다. – 0xAffe

관련 문제