hires.html
来自「perl教程」· HTML 代码 · 共 546 行 · 第 1/3 页
HTML
546 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<li><a href="#examples">EXAMPLES</a></li>
<li><a href="#c_api">C API</a></li>
<li><a href="#diagnostics">DIAGNOSTICS</a></li>
<ul>
<li><a href="#negative_time_not_invented_yet">negative time not invented yet</a></li>
<li><a href="#internal_error__useconds___0__unsigned_____signed_____">internal error: useconds < 0 (unsigned ... signed ...)</a></li>
</ul>
<li><a href="#caveats">CAVEATS</a></li>
<li><a href="#see_also">SEE ALSO</a></li>
<li><a href="#authors">AUTHORS</a></li>
<li><a href="#copyright_and_license">COPYRIGHT AND LICENSE</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">Time::HiRes</span> <span class="string">qw( usleep ualarm gettimeofday tv_interval nanosleep
clock_gettime clock_getres clock_nanosleep clock )</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">usleep</span> <span class="operator">(</span><span class="variable">$microseconds</span><span class="operator">);</span>
<span class="variable">nanosleep</span> <span class="operator">(</span><span class="variable">$nanoseconds</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">ualarm</span> <span class="operator">(</span><span class="variable">$microseconds</span><span class="operator">);</span>
<span class="variable">ualarm</span> <span class="operator">(</span><span class="variable">$microseconds</span><span class="operator">,</span> <span class="variable">$interval_microseconds</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">$t0</span> <span class="operator">=</span> <span class="operator">[</span><span class="variable">gettimeofday</span><span class="operator">]</span><span class="operator">;</span>
<span class="operator">(</span><span class="variable">$seconds</span><span class="operator">,</span> <span class="variable">$microseconds</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">gettimeofday</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$elapsed</span> <span class="operator">=</span> <span class="variable">tv_interval</span> <span class="operator">(</span> <span class="variable">$t0</span><span class="operator">,</span> <span class="operator">[</span><span class="variable">$seconds</span><span class="operator">,</span> <span class="variable">$microseconds</span><span class="operator">]</span><span class="operator">);</span>
<span class="variable">$elapsed</span> <span class="operator">=</span> <span class="variable">tv_interval</span> <span class="operator">(</span> <span class="variable">$t0</span><span class="operator">,</span> <span class="operator">[</span><span class="variable">gettimeofday</span><span class="operator">]</span><span class="operator">);</span>
<span class="variable">$elapsed</span> <span class="operator">=</span> <span class="variable">tv_interval</span> <span class="operator">(</span> <span class="variable">$t0</span> <span class="operator">);</span>
</pre>
<pre>
<span class="keyword">use</span> <span class="variable">Time::HiRes</span> <span class="string">qw ( time alarm sleep )</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$now_fractions</span> <span class="operator">=</span> <span class="keyword">time</span><span class="operator">;</span>
<span class="keyword">sleep</span> <span class="operator">(</span><span class="variable">$floating_seconds</span><span class="operator">);</span>
<span class="keyword">alarm</span> <span class="operator">(</span><span class="variable">$floating_seconds</span><span class="operator">);</span>
<span class="keyword">alarm</span> <span class="operator">(</span><span class="variable">$floating_seconds</span><span class="operator">,</span> <span class="variable">$floating_interval</span><span class="operator">);</span>
</pre>
<pre>
<span class="keyword">use</span> <span class="variable">Time::HiRes</span> <span class="string">qw( setitimer getitimer
ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF )</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">setitimer</span> <span class="operator">(</span><span class="variable">$which</span><span class="operator">,</span> <span class="variable">$floating_seconds</span><span class="operator">,</span> <span class="variable">$floating_interval</span> <span class="operator">);</span>
<span class="variable">getitimer</span> <span class="operator">(</span><span class="variable">$which</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">$realtime</span> <span class="operator">=</span> <span class="variable">clock_gettime</span><span class="operator">(</span><span class="variable">CLOCK_REALTIME</span><span class="operator">);</span>
<span class="variable">$resolution</span> <span class="operator">=</span> <span class="variable">clock_getres</span><span class="operator">(</span><span class="variable">CLOCK_REALTIME</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">clock_nanosleep</span><span class="operator">(</span><span class="variable">CLOCK_REALTIME</span><span class="operator">,</span> <span class="number">1.5</span><span class="operator">);</span>
<span class="variable">clock_nanosleep</span><span class="operator">(</span><span class="variable">CLOCK_REALTIME</span><span class="operator">,</span> <span class="keyword">time</span><span class="operator">()</span> <span class="operator">+</span> <span class="number">10</span><span class="operator">,</span> <span class="variable">TIMER_ABSTIME</span><span class="operator">);</span>
</pre>
<pre>
<span class="keyword">my</span> <span class="variable">$ticktock</span> <span class="operator">=</span> <span class="variable">clock</span><span class="operator">();</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The <code>Time::HiRes</code> module implements a Perl interface to the
<a href="#item_usleep"><code>usleep</code></a>, <a href="#item_nanosleep"><code>nanosleep</code></a>, <a href="#item_ualarm"><code>ualarm</code></a>, <a href="#item_gettimeofday"><code>gettimeofday</code></a>, and
<a href="#item_setitimer"><code>setitimer</code></a>/<a href="#item_getitimer"><code>getitimer</code></a> system calls, in other words, high
resolution time and timers. See the <a href="#examples">EXAMPLES</a> section below and the
test scripts for usage; see your system documentation for the
description of the underlying <a href="#item_nanosleep"><code>nanosleep</code></a> or <a href="#item_usleep"><code>usleep</code></a>, <a href="#item_ualarm"><code>ualarm</code></a>,
<a href="#item_gettimeofday"><code>gettimeofday</code></a>, and <a href="#item_setitimer"><code>setitimer</code></a>/<a href="#item_getitimer"><code>getitimer</code></a> calls.</p>
<p>If your system lacks <a href="#item_gettimeofday"><code>gettimeofday()</code></a> or an emulation of it you don't
get <a href="#item_gettimeofday"><code>gettimeofday()</code></a> or the one-argument form of <a href="#item_tv_interval"><code>tv_interval()</code></a>.
If your system lacks all of <a href="#item_nanosleep"><code>nanosleep()</code></a>, <a href="#item_usleep"><code>usleep()</code></a>,
<a href="../../lib/Pod/perlfunc.html#item_select"><code>select()</code></a>, and <code>poll</code>, you don't get <a href="#item_usleep"><code>Time::HiRes::usleep()</code></a>,
<a href="#item_nanosleep"><code>Time::HiRes::nanosleep()</code></a>, or <a href="#item_sleep"><code>Time::HiRes::sleep()</code></a>.
If your system lacks both <a href="#item_ualarm"><code>ualarm()</code></a> and <a href="#item_setitimer"><code>setitimer()</code></a> you don't get
<a href="#item_ualarm"><code>Time::HiRes::ualarm()</code></a> or <a href="#item_alarm"><code>Time::HiRes::alarm()</code></a>.</p>
<p>If you try to import an unimplemented function in the <a href="../../lib/Pod/perlfunc.html#item_use"><code>use</code></a> statement
it will fail at compile time.</p>
<p>If your subsecond sleeping is implemented with <a href="#item_nanosleep"><code>nanosleep()</code></a> instead
of <a href="#item_usleep"><code>usleep()</code></a>, you can mix subsecond sleeping with signals since
<a href="#item_nanosleep"><code>nanosleep()</code></a> does not use signals. This, however, is not portable,
and you should first check for the truth value of
<code>&Time::HiRes::d_nanosleep</code> to see whether you have nanosleep, and
then carefully read your <a href="#item_nanosleep"><code>nanosleep()</code></a> C API documentation for any
peculiarities.</p>
<p>If you are using <a href="#item_nanosleep"><code>nanosleep</code></a> for something else than mixing sleeping
with signals, give some thought to whether Perl is the tool you should
be using for work requiring nanosecond accuracies.</p>
<p>The following functions can be imported from this module.
No functions are exported by default.</p>
<dl>
<dt><strong><a name="item_gettimeofday">gettimeofday ()</a></strong>
<dd>
<p>In array context returns a two-element array with the seconds and
microseconds since the epoch. In scalar context returns floating
seconds like <a href="#item_time"><code>Time::HiRes::time()</code></a> (see below).</p>
</dd>
</li>
<dt><strong><a name="item_usleep">usleep ( $useconds )</a></strong>
<dd>
<p>Sleeps for the number of microseconds (millionths of a second)
specified. Returns the number of microseconds actually slept. Can
sleep for more than one second, unlike the <a href="#item_usleep"><code>usleep</code></a> system call. Can
also sleep for zero seconds, which often works like a <em>thread yield</em>.
See also <a href="#item_usleep"><code>Time::HiRes::usleep()</code></a>, <a href="#item_sleep"><code>Time::HiRes::sleep()</code></a>, and
<a href="#item_clock_nanosleep"><code>Time::HiRes::clock_nanosleep()</code></a>.</p>
</dd>
<dd>
<p>Do not expect <a href="#item_usleep"><code>usleep()</code></a> to be exact down to one microsecond.</p>
</dd>
</li>
<dt><strong><a name="item_nanosleep">nanosleep ( $nanoseconds )</a></strong>
<dd>
<p>Sleeps for the number of nanoseconds (1e9ths of a second) specified.
Returns the number of nanoseconds actually slept (accurate only to
microseconds, the nearest thousand of them). Can sleep for more than
one second. Can also sleep for zero seconds, which often works like a
<em>thread yield</em>. See also <a href="#item_sleep"><code>Time::HiRes::sleep()</code></a>,
<a href="#item_usleep"><code>Time::HiRes::usleep()</code></a>, and <a href="#item_clock_nanosleep"><code>Time::HiRes::clock_nanosleep()</code></a>.</p>
</dd>
<dd>
<p>Do not expect <a href="#item_nanosleep"><code>nanosleep()</code></a> to be exact down to one nanosecond.
Getting even accuracy of one thousand nanoseconds is good.</p>
</dd>
</li>
<dt><strong><a name="item_ualarm">ualarm ( $useconds [, $interval_useconds ] )</a></strong>
<dd>
<p>Issues a <a href="#item_ualarm"><code>ualarm</code></a> call; the <code>$interval_useconds</code> is optional and
will be zero if unspecified, resulting in <a href="#item_alarm"><code>alarm</code></a>-like behaviour.</p>
</dd>
<dd>
<p>Note that the interaction between alarms and sleeps is unspecified.</p>
</dd>
</li>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?