Method: Kernel#sleep
- Defined in:
- process.c
#sleep(secs = nil) ⇒ Object
Suspends execution of the current thread for the number of seconds specified by numeric argument secs
, or forever if secs
is nil
; returns the integer number of seconds suspended (rounded).
Time.new # => 2008-03-08 19:56:19 +0900
sleep 1.2 # => 1
Time.new # => 2008-03-08 19:56:20 +0900
sleep 1.9 # => 2
Time.new # => 2008-03-08 19:56:22 +0900
5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 |
# File 'process.c', line 5053
static VALUE
rb_f_sleep(int argc, VALUE *argv, VALUE _)
{
time_t beg = time(0);
VALUE scheduler = rb_fiber_scheduler_current();
if (scheduler != Qnil) {
rb_fiber_scheduler_kernel_sleepv(scheduler, argc, argv);
}
else {
if (argc == 0 || (argc == 1 && NIL_P(argv[0]))) {
rb_thread_sleep_forever();
}
else {
rb_check_arity(argc, 0, 1);
rb_thread_wait_for(rb_time_interval(argv[0]));
}
}
time_t end = time(0) - beg;
return TIMET2NUM(end);
}
|