diff options
Diffstat (limited to 'test/fiber/scheduler.rb')
-rw-r--r-- | test/fiber/scheduler.rb | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/test/fiber/scheduler.rb b/test/fiber/scheduler.rb index d93d0f106d..c685e6ffc0 100644 --- a/test/fiber/scheduler.rb +++ b/test/fiber/scheduler.rb @@ -102,8 +102,8 @@ class Scheduler self.run ensure @closed = true - - # We freeze to detect any inadvertant modifications after the scheduler is closed: + + # We freeze to detect any unintended modifications after the scheduler is closed: self.freeze end @@ -144,19 +144,21 @@ class Scheduler # Used when blocking on synchronization (Mutex#lock, Queue#pop, SizedQueue#push, ...) def block(blocker, timeout = nil) # p [__method__, blocker, timeout] - @blocking += 1 - if timeout @waiting[Fiber.current] = current_time + timeout - end - - Fiber.yield - ensure - @blocking -= 1 - - # Remove from @waiting in the case #unblock was called before the timeout expired: - if timeout - @waiting.delete(Fiber.current) + begin + Fiber.yield + ensure + # Remove from @waiting in the case #unblock was called before the timeout expired: + @waiting.delete(Fiber.current) + end + else + @blocking += 1 + begin + Fiber.yield + ensure + @blocking -= 1 + end end end |