From: Brian Candler Date: 2007-02-07T06:04:38+09:00 Subject: Re: Thread Question On Wed, Feb 07, 2007 at 03:50:35AM +0900, Drew Olson wrote: > 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.