<p>对于Perl,对于默认功能,<a href="https://stackoverflow.com/questions/896904/how-do-i-sleep-for-a-millisecond-in-perl">How do I sleep for a millisecond in Perl?</a>中声明:</p>
<ul>
<li><code>sleep</code>的分辨率为秒</li>
<li><code>select</code>接受浮点,小数部分解释为毫秒</li>
</ul>
<p>为了获得更高的分辨率,可以使用<code>Time::HiRes</code>模块,例如<code>usleep()</code>。在</p>
<p>如果使用默认的Perl功能,实现这种“线程化”计数的唯一方法似乎是“fork”脚本,让每个“fork”充当“thread”并进行自己的计数;我在<a href="http://www.daniweb.com/software-development/perl/threads/20287" rel="nofollow noreferrer">Perl- How to call an event after a time delay - Perl</a>上看到了这种方法,下面是一个修改后的版本,用于反映操作:</p>
<pre><code>#!/usr/bin/env perl
use strict;
my $pid;
my $c=0;
my $i=0;
sub mainCount()
{
print "mainCount\n";
while ($i < 5) {
$i = $i + 1;
print("i=" . $i . "\n");
select(undef, undef, undef, 0.5); # sleep 500 ms
}
};
sub timedCount()
{
print "timedCount\n";
while ($c < 10) {
$c = $c + 1;
print("c=" . $c . "\n");
select(undef, undef, undef, 0.1); # sleep 100 ms
}
};
# main:
die "cant fork $!\n" unless defined($pid=fork());
if($pid) {
mainCount();
} else {
timedCount();
}
</code></pre>