Ruby (and most languages) evaluates the arguments before passing them through to the function. So it first evaluates server.accept, which blocks until a new connection, then passes the return value through to Thread.new which spawns the new thread.
The parameters to Thread.new are just passed straight through to the block.
Comments
Soo the parameter to Thread.new is a function that blocks on the parent thread, before a new thread is even created?
Ruby (and most languages) evaluates the arguments before passing them through to the function. So it first evaluates server.accept, which blocks until a new connection, then passes the return value through to Thread.new which spawns the new thread.
The parameters to Thread.new are just passed straight through to the block.
Ahhh! I thought it was passing the accept function and not its result. Been too long, ruby! Thanks guys :)
Yep, that's exactly what's happening. A little confusing because ruby doesn't require brackets for zero argument function calls.