about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-01-05 17:18:05 -0800
committerEric Wong <normalperson@yhbt.net>2011-01-06 14:14:30 -0800
commit31a93152c8977f31045bd182ae99df4ebd088abf (patch)
tree5e981f28e1a4e330bd8433b248a124fa07cb580d
parent6bde32081338ce8075854f4c47ce8ca5347df919 (diff)
downloadrainbows-31a93152c8977f31045bd182ae99df4ebd088abf.tar.gz
We noticed a few more things that could be cleaned
up after the last commit.
-rw-r--r--lib/rainbows.rb4
-rw-r--r--lib/rainbows/fiber_pool.rb2
-rw-r--r--lib/rainbows/fiber_spawn.rb2
-rw-r--r--lib/rainbows/thread_spawn.rb9
4 files changed, 11 insertions, 6 deletions
diff --git a/lib/rainbows.rb b/lib/rainbows.rb
index ae77dbe..76cb728 100644
--- a/lib/rainbows.rb
+++ b/lib/rainbows.rb
@@ -91,6 +91,10 @@ module Rainbows
     @alive && @server.master_pid == Process.ppid or quit!
   end
 
+  def self.cur_alive
+    @alive || @cur > 0
+  end
+
   def self.quit!
     @alive = false
     Rainbows::HttpParser.quit
diff --git a/lib/rainbows/fiber_pool.rb b/lib/rainbows/fiber_pool.rb
index 229f560..7e50723 100644
--- a/lib/rainbows/fiber_pool.rb
+++ b/lib/rainbows/fiber_pool.rb
@@ -34,6 +34,6 @@ module Rainbows::FiberPool
       end
     rescue => e
       Rainbows::Error.listen_loop(e)
-    end while Rainbows.alive || Rainbows.cur > 0
+    end while Rainbows.cur_alive
   end
 end
diff --git a/lib/rainbows/fiber_spawn.rb b/lib/rainbows/fiber_spawn.rb
index 84df30d..b8552d7 100644
--- a/lib/rainbows/fiber_spawn.rb
+++ b/lib/rainbows/fiber_spawn.rb
@@ -23,6 +23,6 @@ module Rainbows::FiberSpawn
       end
     rescue => e
       Rainbows::Error.listen_loop(e)
-    end while Rainbows.alive || Rainbows.cur > 0
+    end while Rainbows.cur_alive
   end
 end
diff --git a/lib/rainbows/thread_spawn.rb b/lib/rainbows/thread_spawn.rb
index a0520d1..281e223 100644
--- a/lib/rainbows/thread_spawn.rb
+++ b/lib/rainbows/thread_spawn.rb
@@ -22,18 +22,19 @@ module Rainbows::ThreadSpawn
   def accept_loop(klass) #:nodoc:
     lock = Mutex.new
     limit = worker_connections
+    nr = 0
     LISTENERS.each do |l|
       klass.new(l) do |l|
         begin
-          if lock.synchronize { Rainbows.cur >= limit }
+          if lock.synchronize { nr >= limit }
             worker_yield
           elsif c = l.kgio_accept
             klass.new(c) do |c|
               begin
-                lock.synchronize { Rainbows.cur += 1 }
+                lock.synchronize { nr += 1 }
                 c.process_loop
               ensure
-                lock.synchronize { Rainbows.cur -= 1 }
+                lock.synchronize { nr -= 1 }
               end
             end
           end
@@ -42,7 +43,7 @@ module Rainbows::ThreadSpawn
         end while Rainbows.alive
       end
     end
-    sleep 1 while Rainbows.tick || lock.synchronize { Rainbows.cur > 0 }
+    sleep 1 while Rainbows.tick || lock.synchronize { nr > 0 }
   end
 
   def worker_loop(worker) #:nodoc: