ruby--ruby/test/fiber/test_mutex.rb

48 lines
872 B
Ruby
Raw Normal View History

# frozen_string_literal: true
require 'test/unit'
require_relative 'scheduler'
class TestFiberMutex < Test::Unit::TestCase
def test_mutex_synchronize
mutex = Mutex.new
thread = Thread.new do
scheduler = Scheduler.new
Thread.current.scheduler = scheduler
Fiber.schedule do
assert_equal Thread.scheduler, scheduler
mutex.synchronize do
assert_nil Thread.scheduler
end
end
end
thread.join
end
def test_mutex_deadlock
mutex = Mutex.new
thread = Thread.new do
scheduler = Scheduler.new
Thread.current.scheduler = scheduler
Fiber.schedule do
assert_equal Thread.scheduler, scheduler
mutex.synchronize do
Fiber.yield
end
end
2020-05-14 10:57:39 +00:00
assert_raise ThreadError do
mutex.lock
end
end
thread.join
end
end