<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Timer</title>
		<link>http://www.allegro.cc/forums/view/590267</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 26 Feb 2007 10:44:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Whats the best way of telling when 10 seconds has gone by,for example?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xinco1)</author>
		<pubDate>Mon, 26 Feb 2007 04:36:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span> <span class="n">10</span> <span class="k3">*</span> <span class="n">1000</span> <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Do you want to do something while 10 seconds is going by or just wait for 10 seconds? If the former you can set up a timer with
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a>
</pre></div></div><p>
increment a variable every tick and then when the variable * ticks reaches 10 seconds you know 10 seconds will have past.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Mon, 26 Feb 2007 04:37:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Or ...
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> begin_time <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="k1">while</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span> <span class="k3">-</span> begin_time <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">)</span>
<span class="k2">{</span>
     <span class="c">// do stuff</span>
<span class="k2">}</span>
</pre></div></div><p>

If you plan to do very little in the loop, and don&#39;t want to eat up all the CPU, use a rest statement in the loop:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> begin_time <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="k1">while</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span> <span class="k3">-</span> begin_time <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">)</span>
<span class="k2">{</span>
     <span class="c">// do stuff</span>
     <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Mon, 26 Feb 2007 04:44:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>Timer::time_t t <span class="k3">=</span> timer.secs<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

...

<span class="k1">if</span><span class="k2">(</span>timer.secs<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> t <span class="k3">&gt;</span> <span class="n">9</span><span class="k2">)</span>
  .. <span class="n">10</span> seconds have elapsed ..
</pre></div></div><p>

Even easier:
</p><div class="source-code snippet"><div class="inner"><pre>stopwatch sw<span class="k2">;</span>
sw.start<span class="k2">(</span><span class="n">10000</span><span class="k2">)</span><span class="k2">;</span>

..

<span class="k1">if</span><span class="k2">(</span>sw.check<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
  .. <span class="n">10</span> seconds have elapsed ..
</pre></div></div><p>

If you want either of these classes I can give them to you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 26 Feb 2007 08:28:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.boost.org/libs/timer/timer.htm">http://www.boost.org/libs/timer/timer.htm</a></p><p>It&#39;s cross platform. I can&#39;t recall if this particular boost lib will be in the next C++ standard but its probably a good shot. It&#39;s resolution depends on OS&#39;s but windows and *nix are both millisecond tickers IIRC. </p><p>from the site:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>Synopsis</td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;boost/timer.hpp&gt;</span></td></tr><tr><td class="number">4</td><td><span class="k1">namespace</span> boost <span class="k2">{</span></td></tr><tr><td class="number">5</td><td><span class="k1">class</span> timer <span class="k2">{</span></td></tr><tr><td class="number">6</td><td> public:</td></tr><tr><td class="number">7</td><td>         timer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                        <span class="c">// postcondition: elapsed()==0</span></td></tr><tr><td class="number">8</td><td>  <span class="c">// compiler generated copy constructor, copy assignment, and dtor apply</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">void</span>   restart<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                      <span class="c">// post: elapsed()==0</span></td></tr><tr><td class="number">10</td><td>  <span class="k1">double</span> elapsed<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>                <span class="c">// return elapsed time in seconds</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>  <span class="k1">double</span> elapsed_max<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>  <span class="c">// return estimated maximum value for elapsed()</span></td></tr><tr><td class="number">13</td><td>  <span class="c">// Portability warning: elapsed_max() may return too high a value on systems</span></td></tr><tr><td class="number">14</td><td>  <span class="c">// where std::clock_t overflows or resets at surprising values.</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>  <span class="k1">double</span> elapsed_min<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>            <span class="c">// return minimum value for elapsed()</span></td></tr><tr><td class="number">17</td><td>  <span class="k2">}</span><span class="k2">;</span> <span class="c">// timer</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span> <span class="c">// namespace boost</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Goalie Ca)</author>
		<pubDate>Mon, 26 Feb 2007 10:44:13 +0000</pubDate>
	</item>
</rss>
