Sleep vs Usleep哪一个选择? (Perl的)

时间:2014-01-02 15:03:07

标签: perl

除了秒和微秒之外,睡眠和睡眠之间是否存在差异?例如在表现?我的意思是有些情况下使用一个而不是另一个更好吗?

2 个答案:

答案 0 :(得分:6)

秒与微秒是唯一的实际差异。

请注意,sleep总是会睡眠整整几秒钟。它可以作为参数传递一个非整数,但这将向下舍入。

sleep(1.995);    # sleeps for one second, not two.

答案 1 :(得分:2)

由于usleep来自Time :: HiRes,您还可以从该模块导入睡眠以覆盖内置睡眠并允许睡眠浮动:

use Time::HiRes qw/sleep/;
use DateTime::HiRes;
my $now = DateTime::HiRes->now;
say $now, '.', $now->millisecond; 
for (qw/1.6 2.4 .2 .5 .2 .2 .2 .2 .2 .2/) { 
  sleep($_); 
  my $now = DateTime::HiRes->now; 
  say $now, '.', $now->millisecond; 
}

给出:

2014-01-02T16:23:28.915
2014-01-02T16:23:30.515
2014-01-02T16:23:32.915
2014-01-02T16:23:33.116
2014-01-02T16:23:33.618
2014-01-02T16:23:33.817
2014-01-02T16:23:34.18
2014-01-02T16:23:34.220
2014-01-02T16:23:34.421
2014-01-02T16:23:34.622
2014-01-02T16:23:34.823