зеркало из https://github.com/github/ruby.git
* test/ruby/test_thread.rb (test_cv_wait_deadlock): enable
cv deadlock test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
1f1db611b9
Коммит
afbbcd133c
|
@ -1,3 +1,8 @@
|
|||
Sat Dec 1 15:14:25 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||
|
||||
* test/ruby/test_thread.rb (test_cv_wait_deadlock): enable
|
||||
cv deadlock test.
|
||||
|
||||
Sat Dec 1 14:23:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||
|
||||
* lib/thread.rb (ConditionVariable): use hash instead of array for
|
||||
|
|
|
@ -197,18 +197,24 @@ class TestThread < Test::Unit::TestCase
|
|||
assert_equal ["C1", "C1", "C1", "P1", "P2", "C2", "C2", "C2"], result
|
||||
end
|
||||
|
||||
# Hmm.. don't we have a way of catch fatal exception?
|
||||
#
|
||||
# def test_cv_wait_deadlock
|
||||
# mutex = Mutex.new
|
||||
# cv = ConditionVariable.new
|
||||
#
|
||||
# assert_raise(fatal) {
|
||||
# mutex.lock
|
||||
# cv.wait mutex
|
||||
# mutex.unlock
|
||||
# }
|
||||
# end
|
||||
def test_condvar_wait_deadlock
|
||||
assert_in_out_err([], <<-INPUT, ["No live threads left. Deadlock?"], [])
|
||||
require "thread"
|
||||
|
||||
mutex = Mutex.new
|
||||
cv = ConditionVariable.new
|
||||
|
||||
mesg = nil
|
||||
begin
|
||||
mutex.lock
|
||||
cv.wait mutex
|
||||
mutex.unlock
|
||||
rescue Exception => e
|
||||
mesg = e.message
|
||||
end
|
||||
print mesg
|
||||
INPUT
|
||||
end
|
||||
|
||||
def test_condvar_wait_deadlock_2
|
||||
nr_threads = 3
|
||||
|
|
Загрузка…
Ссылка в новой задаче