<?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[Zeitfunktion]]></title><description><![CDATA[<p>Wie kann ich eine durchgehende Pausefunktion schreiben, ohne dass das ganze Programm stehen bleibt, sondern vll. nur eine Funktion gestartet wird. Also das ich vll. die Funktion &quot;ZEIT&quot; habe, und ich dann machen kann:</p>
<pre><code class="language-cpp">while(1)
{ 
   if ZEIT(5) func();
   cout &lt;&lt; &quot;HALLO&quot; &lt;&lt; endl;
}
</code></pre>
<p>Also wenn 5 Sekunden vorbei sind, dann soll func() aufgerufen werden. Und nach 5 Sekunden wird ZEIT halt neu gestartet und geht wieder von worne los. Und nach 5 Sekunden wird wieder func() aufgerufen.....<br />
Aber es soll halt durchgehen sein, sodass auch das &quot;HALLO&quot; auf den Bildschirm geschrieben wird. Ist sowas möglich? Sollte man das dann vll. eher mit einer Klasse machen? Wie würdet ihr das jetzt umsetzen bzw. die Funktion ZEIT(...) machen?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192124/zeitfunktion</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 07:59:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192124.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Sep 2007 19:21:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeitfunktion on Mon, 10 Sep 2007 19:21:17 GMT]]></title><description><![CDATA[<p>Wie kann ich eine durchgehende Pausefunktion schreiben, ohne dass das ganze Programm stehen bleibt, sondern vll. nur eine Funktion gestartet wird. Also das ich vll. die Funktion &quot;ZEIT&quot; habe, und ich dann machen kann:</p>
<pre><code class="language-cpp">while(1)
{ 
   if ZEIT(5) func();
   cout &lt;&lt; &quot;HALLO&quot; &lt;&lt; endl;
}
</code></pre>
<p>Also wenn 5 Sekunden vorbei sind, dann soll func() aufgerufen werden. Und nach 5 Sekunden wird ZEIT halt neu gestartet und geht wieder von worne los. Und nach 5 Sekunden wird wieder func() aufgerufen.....<br />
Aber es soll halt durchgehen sein, sodass auch das &quot;HALLO&quot; auf den Bildschirm geschrieben wird. Ist sowas möglich? Sollte man das dann vll. eher mit einer Klasse machen? Wie würdet ihr das jetzt umsetzen bzw. die Funktion ZEIT(...) machen?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362837</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 10 Sep 2007 19:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zeitfunktion on Mon, 10 Sep 2007 19:49:43 GMT]]></title><description><![CDATA[<p>Sowas geht im Allgemeinen mit Threads. Aber wenn du noch nicht so sicher in der Sprache bist, solltest du die tunlichst vermeiden. Du musst dabei ziemlich darauf aufpassen, wer gerade worauf zugreift (hier zb wenn func auch etwas über std::cout ausgibt).</p>
<p><a href="http://kharchi.de/threads.html" rel="nofollow">http://kharchi.de/threads.html</a><br />
<a href="http://www.boost.org/doc/html/thread.html" rel="nofollow">http://www.boost.org/doc/html/thread.html</a></p>
<p>/edit:</p>
<p>Dein Codebeispiel wäre dann eher sowas wie:</p>
<pre><code class="language-cpp">namespace
{
    template &lt;typename Functype&gt;
    void caller (Functype func, unsigned sec)
    {
        boost::xtime xt;
        boost::xtime_get (&amp;xt)
        xt.m_sec += sec;
        boost::thread::sleep (xt);
        func ();
    }
}

template &lt;typename Functype&gt;
void call_after_sec (Functype func, unsigned sec)
{
    boost::thread (boost::bind (caller&lt;Functype&gt;, func, sec));
}
</code></pre>
<p>Ohne Gewähr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362846</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 10 Sep 2007 19:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zeitfunktion on Mon, 10 Sep 2007 19:50:00 GMT]]></title><description><![CDATA[<p>Aso, mh dann lass ich das mal lieber noch. Aber dann kann ich ja wenigstens eine &quot;stop&quot; Funktion schreiben, die mein Programm anhält. Hier:</p>
<pre><code class="language-cpp">inline bool events::stop(int milisecs) const
{
    int temp=time(0)+milisecs;
    while(1)
    {
        if (time(0)==temp)
        {
            return true;
        }
    }
}
</code></pre>
<p>Warum funktioniert das nicht da kommt immer:</p>
<blockquote>
<p>events.hpp:12: warning: inline function `bool events::stop(int) const' used but never defined</p>
</blockquote>
<p>und wenn ich die Funktion dann aufrufe;</p>
<pre><code class="language-cpp">events zeit;
zeit.stop(10000);
system(&quot;pause&quot;);
</code></pre>
<p>Kommt:</p>
<blockquote>
<p>undefined reference to `events::stop(int) const'</p>
</blockquote>
<p>???</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362853</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 10 Sep 2007 19:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zeitfunktion on Mon, 10 Sep 2007 19:55:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;ctime&gt;

void events::stop(std::size_t ms) const
{
    std::size_t time = static_cast&lt;std::size_t&gt;(std::time(0)) + ms;
    while(std::time(0) &lt;= time);
}
</code></pre>
<p>wäre das, was du versucht hast ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362859</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 10 Sep 2007 19:55:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zeitfunktion on Mon, 10 Sep 2007 20:06:43 GMT]]></title><description><![CDATA[<p>Und das ist nicht schön ;). Solche Sachen (die nichts mit eigentlichem Multithreading zu tun haben) ist es dann doch besser, anständige Funktionen zu nutzen. Zum einen liefert std::time afaik keine Genauigkeit im Millisekundenbereich, zum anderen ist das ein ziemlich geschäftiges Programm, dafür das es nichts tut (will heißen es verbrät wahrscheinlich beim Warten mehr CPU-Zeit als im eigentlichen Programmablauf!).<br />
Du kannst entweder die plattformabhängiges wie Sleep (Windows) oder usleep (Unices) oder, wenn es schon installiert sein sollte, die plattformunabhängige Boost-Version benutzen. Der entsprechende Code wäre dann:</p>
<pre><code class="language-cpp">// Unix
#include &lt;unistd.h&gt;

void events::stop (std::size_t ms) const
{
    usleep (ms * 1000);
}

// Boost
#include &lt;boost/thread/xtime.hpp&gt;

void events::stop(std::size_t ms) const
{
    boost::xtime xt;
    boost::xtime_get (&amp;xt, boost::TIME_UTC);
    xt.nsec += ms * 1000000;
    boost::thread::sleep (xt);
}
</code></pre>
<p>Ich kann verstehen, wenn dir Letzteres zu unhandlich ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Zu Sleep kann ich nichts sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362863</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 10 Sep 2007 20:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zeitfunktion on Mon, 10 Sep 2007 22:38:36 GMT]]></title><description><![CDATA[<p>Stromberg, was willst du denn erreichen?<br />
Das was du beschreibst geht am ehesten wirklich mit Threads, aber wie schon geschrieben wurde sind Threads nicht so einfach (Achtung, Untertreibung!).</p>
<p>Vielleicht ist das was du letztendlich erreichen willst aber viel einfacher hinzubekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362902</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 10 Sep 2007 22:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeitfunktion on Tue, 11 Sep 2007 05:58:22 GMT]]></title><description><![CDATA[<p>Naja würde Stromberg nen Timer empfehlen, welcher alle X sekunden eine Funktion aufruft, und währendedesen die funktion aufgerufen wird, kann das progamm nichts anderes tun..</p>
<p>Naja ist allerdings nur gut, wenn diese Funktion nich lange braucht, ansonsten Threads:)</p>
<p>Bei Timer gibts halt keine Probleme mit gemeinsame ressourcenzugriff</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362960</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 11 Sep 2007 05:58:22 GMT</pubDate></item></channel></rss>