summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--test/thread/test_queue.rb5
2 files changed, 15 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f24cbf0aff..1ad25a3430 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Thu Mar 7 01:17:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/thread/test_queue.rb (TestQueue#test_thr_kill): reduce
+ iterations from 2000 to 250. When running on uniprocessor
+ systems, every th.kill needs TIME_QUANTUM_USEC time (i.e.
+ 100msec on posix systems). Because, "r.read 1" is 3 steps
+ operations that 1) release GVL 2) read 3) acquire gvl and
+ (1) invoke context switch to main thread. and then, main
+ thread's th.kill resume (1), but not (2). Thus read interrupt
+ need TIME_QUANTUM_USEC. Then maximum iteration is 30sec/100msec
+ = 300.
+
Thu Mar 7 00:14:51 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* io.c (rb_update_max_fd): use ATOMIC_CAS because this function
diff --git a/test/thread/test_queue.rb b/test/thread/test_queue.rb
index ec743772f8..993514f86d 100644
--- a/test/thread/test_queue.rb
+++ b/test/thread/test_queue.rb
@@ -85,7 +85,7 @@ class TestQueue < Test::Unit::TestCase
bug5343 = '[ruby-core:39634]'
Dir.mktmpdir {|d|
timeout = 30
- total_count = 2000
+ total_count = 250
begin
assert_normal_exit(<<-"_eom", bug5343, {:timeout => timeout, :chdir=>d})
require "thread"
@@ -98,7 +98,8 @@ class TestQueue < Test::Unit::TestCase
r.read 1
}
queue.pop
- th.kill.join
+ th.kill
+ th.join
end
_eom
rescue Timeout::Error