Synchronize with a Queue instead of sleeping

This commit is contained in:
Nobuyoshi Nakada 2019-12-24 15:47:59 +09:00
parent 47ad57f245
commit 81504e83e7
No known key found for this signature in database
GPG Key ID: 4BC7D6DF58D8DF60

View File

@ -63,16 +63,20 @@ class TestIOWait < Test::Unit::TestCase
end
def test_wait_forever
th = Thread.new { sleep 0.01; @w.syswrite "." }
q = Thread::Queue.new
th = Thread.new { q.pop; @w.syswrite "." }
q.push(true)
assert_equal @r, @r.wait
ensure
th.join
end
def test_wait_eof
th = Thread.new { sleep 0.01; @w.close }
q = Thread::Queue.new
th = Thread.new { q.pop; @w.close }
ret = nil
assert_nothing_raised(Timeout::Error) do
q.push(true)
Timeout.timeout(0.1) { ret = @r.wait }
end
assert_equal @r, ret
@ -94,16 +98,20 @@ class TestIOWait < Test::Unit::TestCase
end
def test_wait_readable_forever
th = Thread.new { sleep 0.01; @w.syswrite "." }
q = Thread::Queue.new
th = Thread.new { q.pop; @w.syswrite "." }
q.push(true)
assert_equal @r, @r.wait_readable
ensure
th.join
end
def test_wait_readable_eof
th = Thread.new { sleep 0.01; @w.close }
q = Thread::Queue.new
th = Thread.new { q.pop; @w.close }
ret = nil
assert_nothing_raised(Timeout::Error) do
q.push(true)
Timeout.timeout(0.1) { ret = @r.wait_readable }
end
assert_equal @r, ret