From 60defe0a68a40d1b3225cf6b971ea195e19ae2e2 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 6 Oct 2022 15:53:16 +0200 Subject: thread_sync.c: Clarify and document the behavior of timeout == 0 [Feature #18982] Instead of introducing an `exception: false` argument to have `non_block` return nil rather than raise, we can clearly document that a timeout of 0 immediately returns. The code is refactored a bit to avoid doing a time calculation in such case. --- thread_sync.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'thread_sync.rb') diff --git a/thread_sync.rb b/thread_sync.rb index 7e4c341ad0..f8fa69900b 100644 --- a/thread_sync.rb +++ b/thread_sync.rb @@ -10,7 +10,7 @@ class Thread # +ThreadError+ is raised. # # If +timeout+ seconds have passed and no data is available +nil+ is - # returned. + # returned. If +timeout+ is +0+ it returns immediately. def pop(non_block = false, timeout: nil) if non_block && timeout raise ArgumentError, "can't set a timeout if non_block is enabled" @@ -32,7 +32,7 @@ class Thread # suspended, and +ThreadError+ is raised. # # If +timeout+ seconds have passed and no data is available +nil+ is - # returned. + # returned. If +timeout+ is +0+ it returns immediately. def pop(non_block = false, timeout: nil) if non_block && timeout raise ArgumentError, "can't set a timeout if non_block is enabled" @@ -54,7 +54,7 @@ class Thread # thread isn't suspended, and +ThreadError+ is raised. # # If +timeout+ seconds have passed and no space is available +nil+ is - # returned. + # returned. If +timeout+ is +0+ it returns immediately. # Otherwise it returns +self+. def push(object, non_block = false, timeout: nil) if non_block && timeout -- cgit v1.2.1