Perl睡眠和时间测量

com*_*ose 1 perl time sleep

我有这段代码

my $time_start = time;
sleep 5;
my $time_diff = time - $time_start;
print "time elapsed: $time_diff";
Run Code Online (Sandbox Code Playgroud)

代码大多按预期打印5,但有时打印4.有可能导致这种情况?是睡眠是罪魁祸首,还是时间本身的测量方法有时会导致精确度不高的问题?

fug*_*ugu 6

perldoc -f sleep:

在某些较旧的系统上,它可能会比您请求的时间少一整秒,具体取决于计算秒数的方式.大多数现代系统总是睡不着觉.但是,它们可能看起来比这更长时间,因为您的进程可能不会立即安排在繁忙的多任务系统中.