[前][次][番号順一覧][スレッド一覧]

ruby-changes:1968

From: ko1@a...
Date: 17 Sep 2007 05:00:26 +0900
Subject: [ruby-changes:1968] shyouhei - Ruby:r13459 (ruby_1_8_6):

shyouhei	2007-09-17 05:00:11 +0900 (Mon, 17 Sep 2007)

  New Revision: 13459

  Added files:
    branches/ruby_1_8_6/test/thread/lbtest.rb
  Modified files:
    branches/ruby_1_8_6/ChangeLog
    branches/ruby_1_8_6/test/thread/test_thread.rb
    branches/ruby_1_8_6/version.h

  Log:


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/ChangeLog?r1=13459&r2=13458
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/version.h?r1=13459&r2=13458
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/test/thread/test_thread.rb?r1=13459&r2=13458
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/test/thread/lbtest.rb

Index: ruby_1_8_6/ChangeLog
===================================================================
--- ruby_1_8_6/ChangeLog	(revision 13458)
+++ ruby_1_8_6/ChangeLog	(revision 13459)
@@ -1,3 +1,8 @@
+Mon Sep 17 04:56:28 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* test/thread/test_thread.rb (test_local_barrier),
+	  test/thread/lbtest.rb: test for [ruby-dev:30653].
+
 Mon Sep 17 04:52:21 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* ruby.c (proc_options): -W should be allowed in RUBYOPT
Index: ruby_1_8_6/version.h
===================================================================
--- ruby_1_8_6/version.h	(revision 13458)
+++ ruby_1_8_6/version.h	(revision 13459)
@@ -2,7 +2,7 @@
 #define RUBY_RELEASE_DATE "2007-09-17"
 #define RUBY_VERSION_CODE 186
 #define RUBY_RELEASE_CODE 20070917
-#define RUBY_PATCHLEVEL 103
+#define RUBY_PATCHLEVEL 104
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
Index: ruby_1_8_6/test/thread/lbtest.rb
===================================================================
--- ruby_1_8_6/test/thread/lbtest.rb	(revision 0)
+++ ruby_1_8_6/test/thread/lbtest.rb	(revision 13459)
@@ -0,0 +1,51 @@
+#! /usr/bin/ruby
+require 'thread'
+
+class LocalBarrier
+  def initialize(n)
+    @wait = Queue.new
+    @done = Queue.new
+    @keeper = begin_keeper(n)
+  end
+
+  def sync
+    @done.push(true)
+    @wait.pop
+  end
+
+  def join
+    @keeper.join
+  end
+
+  private
+  def begin_keeper(n)
+    Thread.start do
+      n.times do
+        @done.pop
+      end
+      n.times do
+        @wait.push(true)
+      end
+    end
+  end
+end
+
+n = 10
+
+lb = LocalBarrier.new(n)
+
+(n - 1).times do |i|
+  Thread.start do
+    sleep((rand(n) + 1) / 10.0)
+    puts "#{i}: done"
+    lb.sync
+    puts "#{i}: cont"
+  end
+end
+
+lb.sync
+puts "#{n-1}: done"
+
+# lb.join # leaving waiting threads.
+
+puts "exit."

Property changes on: ruby_1_8_6/test/thread/lbtest.rb
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:eol-style
   + LF

Index: ruby_1_8_6/test/thread/test_thread.rb
===================================================================
--- ruby_1_8_6/test/thread/test_thread.rb	(revision 13458)
+++ ruby_1_8_6/test/thread/test_thread.rb	(revision 13459)
@@ -1,3 +1,4 @@
+# -*- ruby-indent-level: 4 -*-
 require 'thread'
 require 'test/unit'
 
@@ -63,5 +64,18 @@
 	assert_raises(Interrupt) { thread.value }
 	assert(locked)
     end
+
+    def test_local_barrier
+        dir = File.dirname(__FILE__)
+        lbtest = File.join(dir, "lbtest.rb")
+        $:.unshift File.join(File.dirname(dir), 'ruby')
+        require 'envutil'
+        $:.shift
+        10.times {
+            result = `#{EnvUtil.rubybin} #{lbtest}`
+            assert(!$?.coredump?, '[ruby-dev:30653]')
+            assert_equal("exit.", result[/.*\Z/], '[ruby-dev:30653]')
+        }
+    end
 end
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]