[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:275

From: ko1 atdot.net
Date: 18 Feb 2006 16:20:08 -0000
Subject: [yarv-diff:275] r439 - in trunk: . lib

Author: aamine
Date: 2006-02-19 01:20:07 +0900 (Sun, 19 Feb 2006)
New Revision: 439

Modified:
   trunk/ChangeLog
   trunk/lib/thread.rb
Log:
* lib/thread.rb (SizedQueue): didn't work.  This patch was contributed by yukimizake. [yarv-dev:916]


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-02-17 17:51:30 UTC (rev 438)
+++ trunk/ChangeLog	2006-02-18 16:20:07 UTC (rev 439)
@@ -4,6 +4,12 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2006-02-19(Sun) 01:19:42 +0900  Minero Aoki  <aamine loveruby.net>
+
+	* lib/thread.rb (SizedQueue): didn't work.  This patch was
+	  contributed by yukimizake. [yarv-dev:916]
+
+
 2006-02-18(Sat) 02:40:18 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* insns.def, vm.c, vm_macro.def : change BMETHOD algorithm

Modified: trunk/lib/thread.rb
===================================================================
--- trunk/lib/thread.rb	2006-02-17 17:51:30 UTC (rev 438)
+++ trunk/lib/thread.rb	2006-02-18 16:20:07 UTC (rev 439)
@@ -292,13 +292,23 @@
   def push(obj)
     while true
       @mutex.lock
-      break if @que.length >= @max
+      break if @que.length <= @max
       @queue_wait.push Thread.current
-      @mutex.unlock_and_sleep
+      @mutex.unlock_and_stop
     end
-    super
+    @que.push obj
+    begin
+      t = @waiting.shift
+      t.wakeup if t
+    rescue ThreadError
+      retry
+    end
   ensure
     @mutex.unlock
+    begin
+      t.run if t
+    rescue ThreadError
+    end
   end
 
   #


-- 
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]