Thread Question

D

Drew Olson

As posted earlier, I'm working on a simple chat server. However, I seem
to be confused as to how I'm supposed to spawn a new thread. Let's
suppose I want to create a new Thread where an instance of Foo listens
for messages on a socket and echos them. Is this correct? I have similar
code in my server that I'm working on, but it is not functioning
properly. It seems that my infinite while loops are blocking the rest of
the code after the '#keep doing more stuff here' section. Confusing...

mysocket = TCPSocket('someaddress.com',1000);
Thread.new(mysocket){|socket| Foo.new(socket).listen}
# keep doing more stuff here
...
...
...

class Foo
def initialize(socket)
@socket = socket
end

def listen
while true
message = socket.gets
puts message
end
end
end
 
B

Brian Candler

As posted earlier, I'm working on a simple chat server. However, I seem
to be confused as to how I'm supposed to spawn a new thread. Let's
suppose I want to create a new Thread where an instance of Foo listens
for messages on a socket and echos them. Is this correct? I have similar
code in my server that I'm working on, but it is not functioning
properly. It seems that my infinite while loops are blocking the rest of
the code after the '#keep doing more stuff here' section. Confusing...

mysocket = TCPSocket('someaddress.com',1000);
Thread.new(mysocket){|socket| Foo.new(socket).listen}
# keep doing more stuff here

I think you forgot to call 'accept' in a loop, which returns a new socket
for each connection, and then start a new thread for each one.

For a concrete, working example see
http://wiki.rubygarden.org/Ruby/page/show/SingletonTutorial
and scroll down to where it says "class Pop3Server"

For general information on threads see
http://www.rubycentral.com/book/tut_threads.html

HTH,

Brian.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top