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