event_machine: join reactor_thread if it is already running
authorMark J. Titorenko <mark.titorenko@alces-software.com>
Fri, 11 Jan 2013 11:57:12 +0000 (11 11:57 +0000)
committerEric Wong <normalperson@yhbt.net>
Fri, 11 Jan 2013 19:59:36 +0000 (11 19:59 +0000)
...rather than falling through worker_loop

Prior to the application of this patch, if an EventMachine
reactor_thread has already been started elsewhere before the
worker_loop is entered, the worker_loop exits as a second call
to EM.run does not block the current thread.

This patch causes the worker_loop thread to join the
reactor_thread if it is running.

[ew: commit message formatting]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
lib/rainbows/event_machine.rb

index 3ecdb4f..b143b39 100644 (file)
@@ -99,6 +99,7 @@ module Rainbows::EventMachine
         end
       end
     }
+    EM.reactor_thread.join if EM.reactor_running?
   end
 end
 # :enddoc: