mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
235546ba04
commit
19e0d7c18e
2 changed files with 15 additions and 2 deletions
12
ChangeLog
12
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>
|
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
|
* io.c (rb_update_max_fd): use ATOMIC_CAS because this function
|
||||||
|
|
|
@ -85,7 +85,7 @@ class TestQueue < Test::Unit::TestCase
|
||||||
bug5343 = '[ruby-core:39634]'
|
bug5343 = '[ruby-core:39634]'
|
||||||
Dir.mktmpdir {|d|
|
Dir.mktmpdir {|d|
|
||||||
timeout = 30
|
timeout = 30
|
||||||
total_count = 2000
|
total_count = 250
|
||||||
begin
|
begin
|
||||||
assert_normal_exit(<<-"_eom", bug5343, {:timeout => timeout, :chdir=>d})
|
assert_normal_exit(<<-"_eom", bug5343, {:timeout => timeout, :chdir=>d})
|
||||||
require "thread"
|
require "thread"
|
||||||
|
@ -98,7 +98,8 @@ class TestQueue < Test::Unit::TestCase
|
||||||
r.read 1
|
r.read 1
|
||||||
}
|
}
|
||||||
queue.pop
|
queue.pop
|
||||||
th.kill.join
|
th.kill
|
||||||
|
th.join
|
||||||
end
|
end
|
||||||
_eom
|
_eom
|
||||||
rescue Timeout::Error
|
rescue Timeout::Error
|
||||||
|
|
Loading…
Reference in a new issue