2009/10/29 Matt Brooks <mattbrooks / gatech.edu>:

> Hopefully that makes sense, It is a little complicated which is why
> initially I didn't go into why I have a buffer and all...

Um, I have to say I'm a bit stumped.  First of all, from your
explanation it is not clear to me about which of the two (?) processes
we are talking.  It's easier (at least for me) if you use variables,
e.g. "I have a process A which opens a server socket. Process B
connects to A with 1 connection ... Process B is the one I implement
in Ruby and...".

> Ideas on how to prevent my false positive situation when using line[cmd]
> way?

Maybe.  A few things strike me as odd:

- Several different threads seem to be reading from the same
connection.  Not sure whether that's a good idea because that makes
synchronization necessary.

- Since several threads seem to be reading from the socket, any thread
may read another thread's answer which is why you need the buffer.

- No need to reach character by character until \n, you can use #each
or #gets for that which should be significantly faster.

I would start by only having one thread writing to the socket and one
thread reading from it.  The writer reads messages from a queue where
they are placed by worker threads.  How we connect the reader with the
worker threads so that each worker thread gets it's reply depends on
things that aren't clear to me yet.

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/