Perl中的Nano睡眠命令

Joh*_*ohn 2 perl

我正在尝试使用Time :: HiRes qw的perl脚本(gettimeofday tv_interval usleep);

usleep(9.098888)usleep(9.091111)

我的脚本包含,上面的命令,我需要澄清一下,我们会做多少回合?如何使用nanosleep代替?(它会有多大的预测?)

谢谢,Saranyya

Nem*_*emo 5

答案取决于您的平台.

在我自己的Linux系统上,Perl usleep已经调用nanosleep:

$ strace -- perl -le 'use Time::HiRes; Time::HiRes::usleep(1);' 2>&1 | tail
open("/usr/share/perl/5.10/Exporter/Heavy.pm", O_RDONLY) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff375a5740) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
read(4, "package Exporter::Heavy;\n\nuse st"..., 4096) = 4096
read(4, "nd without a leading &.\n\t    # ("..., 4096) = 2250
read(4, "", 4096)                       = 0
close(4)                                = 0
close(3)                                = 0
nanosleep({0, 1000}, NULL)              = 0
exit_group(0)                           = ?
Run Code Online (Sandbox Code Playgroud)

(实际上,我很确定C库的内部usleep调用nanosleep.)

您可以期望的实际分辨率取决于您的特定平台.这些睡眠功能可以以毫秒为单位测量分辨率(特别是对于长时间睡眠),并且它们总是尝试向上舍入.

如果您指定了硬件和操作系统的确切版本,则可能有人可能会nanosleep为您追踪有效的分辨率.