<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Timer]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte in meiner Software einen Timer benutzen, um alle 200ms eine Aktion durchzuführen.<br />
Wie kann man das auf Linux realisieren. Ich scheitere ehrlich gesagt schon an der Frage, wie man das in C++ allgemein anstellt...<br />
Ich habe mir überlegt einen Thread zu erzeugen (mit boost), der die aktion macht und dann für 200ms schlafen gelegt wird, ehe er wieder von vorne anfängt.<br />
Ist das der richtige Weg?? Wie macht ihr das? Dass ein Timer nach genau 200ms zuschlägt, kann man sowieso nur auf einem Echzeitsystem gewährleisten oder?</p>
<p>Danke euch</p>
<p>Viele Grüße<br />
Siegfried</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265034/timer</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 14:21:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265034.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Apr 2010 17:53:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Timer on Fri, 16 Apr 2010 17:53:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte in meiner Software einen Timer benutzen, um alle 200ms eine Aktion durchzuführen.<br />
Wie kann man das auf Linux realisieren. Ich scheitere ehrlich gesagt schon an der Frage, wie man das in C++ allgemein anstellt...<br />
Ich habe mir überlegt einen Thread zu erzeugen (mit boost), der die aktion macht und dann für 200ms schlafen gelegt wird, ehe er wieder von vorne anfängt.<br />
Ist das der richtige Weg?? Wie macht ihr das? Dass ein Timer nach genau 200ms zuschlägt, kann man sowieso nur auf einem Echzeitsystem gewährleisten oder?</p>
<p>Danke euch</p>
<p>Viele Grüße<br />
Siegfried</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883981</guid><dc:creator><![CDATA[Siefried]]></dc:creator><pubDate>Fri, 16 Apr 2010 17:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Timer on Fri, 16 Apr 2010 18:09:11 GMT]]></title><description><![CDATA[<p>Siefried schrieb:</p>
<blockquote>
<p>Ist das der richtige Weg?? Wie macht ihr das? Dass ein Timer nach genau 200ms zuschlägt, kann man sowieso nur auf einem Echzeitsystem gewährleisten oder?</p>
</blockquote>
<p>Da gibts einige Möglichkeiten. Ein einfacher Weg geht so:</p>
<pre><code class="language-cpp">int main()
{
    for(;;)  // endlosschleife
    {
        Sleep(200); // 200 ms schlafen; unter Linux gibt es sleep(), ich weiß die Auflösung aber gerade nicht
        aktion(); // aktion ausführen
    }
}
</code></pre>
<p>Die 200 ms sind nur ein grober Richtwert, wie du schon vermutet hast.</p>
<p>Das kannst du auch in einen Thread auslagern, dann musst du aber darauf achten, dass die ausgeführte Aktion threadsafe ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883992</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Fri, 16 Apr 2010 18:09:11 GMT</pubDate></item><item><title><![CDATA[Reply to Timer on Fri, 16 Apr 2010 18:12:22 GMT]]></title><description><![CDATA[<p>Ich glaub der TE wollte, dass die Aufgabe aller 200ms ausgeführt wird und nicht 200ms zwischen Ende und Anfang der Fkt liegen...</p>
<p>richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883995</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 16 Apr 2010 18:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Timer on Fri, 16 Apr 2010 18:17:44 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Ich glaub der TE wollte, dass die Aufgabe aller 200ms ausgeführt wird und nicht 200ms zwischen Ende und Anfang der Fkt liegen...</p>
</blockquote>
<p>Ja, das hast du wohl recht, das war zu kurz gedacht von mir.<br />
Da ich gerade die verschiedenen Einheiten der Standard-Zeitmessfunktionen nicht auswendig kenne und GetTickCount() nicht gefragt ist, sag ich lieber nix mehr dazu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883997</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Fri, 16 Apr 2010 18:17:44 GMT</pubDate></item><item><title><![CDATA[Reply to Timer on Fri, 16 Apr 2010 18:20:24 GMT]]></title><description><![CDATA[<p>Siefried schrieb:</p>
<blockquote>
<p>ich wollte in meiner Software einen Timer benutzen, um alle 200ms eine Aktion durchzuführen.<br />
Wie kann man das auf Linux realisieren. Ich scheitere ehrlich gesagt schon an der Frage, wie man das in C++ allgemein anstellt...<br />
Ich habe mir überlegt einen Thread zu erzeugen (mit boost), der die aktion macht und dann für 200ms schlafen gelegt wird, ehe er wieder von vorne anfängt.<br />
Ist das der richtige Weg??</p>
</blockquote>
<p>Ja, das ist ein Weg. Besser wäre es IMHO, wenn es unter Linux eine Timer-API gäbe (gibt es eine?), die alle x Millisekunden eine Funktion aufruft. Unter Windows gibt es sowas.</p>
<p>Siefried schrieb:</p>
<blockquote>
<p>Dass ein Timer nach genau 200ms zuschlägt, kann man sowieso nur auf einem Echzeitsystem gewährleisten oder?</p>
</blockquote>
<p>Richtig, wobei es bei einem 200ms-Takt wohl nicht so kritisch ist, ob die Funktion mal 20ms später aufgerufen wird oder nicht. Echtzeitsysteme sind IMHO dann wichtig, wenn Ereignisse µS-genau sein müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883999</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 16 Apr 2010 18:20:24 GMT</pubDate></item></channel></rss>