<?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[Performance von Endlosschleife]]></title><description><![CDATA[<p>Ich habe folgendes Programm geschrieben, das mir die Arbeit mit einigen Programmen erleichtert.<br />
zB. habe ich für die Arbeit mit Word verschiedene &quot;Macros&quot; in diesem Programm implementiert.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

int main()
{
    while(true)
    {
        if(GetAsyncKeyState(VK_F10))  // programm beim Drücken
        {
            ShellExecute(0, &quot;open&quot;, &quot;C:\Programme\Programm.exe&quot;, NULL, NULL, SW_SHOWNORMAL);
        }
    }
return 0;
}
</code></pre>
<p>So kann ich dann die exe im Hintergrund laufen lassen und mit einem Druck auf F10 schnell ein anderes Programm öffnen.</p>
<p>Allerdings kostet &quot;while(true)&quot; extrem viele Ressourcen. So ist laut Taskmanager meine CPU zu fast 50% mit dem Ausführen dieser exe beschäftigt (da ja zig mal pro Sekunde die Schleife ausgeführt und der Status von F10 geprüft wird).<br />
Gibt es eine Performace sparendere Variante, das Programm zu schreiben?</p>
<p>Mfg Perfora</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230775/performance-von-endlosschleife</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 03:27:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230775.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Jan 2009 21:01:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performance von Endlosschleife on Thu, 01 Jan 2009 21:01:18 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Programm geschrieben, das mir die Arbeit mit einigen Programmen erleichtert.<br />
zB. habe ich für die Arbeit mit Word verschiedene &quot;Macros&quot; in diesem Programm implementiert.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

int main()
{
    while(true)
    {
        if(GetAsyncKeyState(VK_F10))  // programm beim Drücken
        {
            ShellExecute(0, &quot;open&quot;, &quot;C:\Programme\Programm.exe&quot;, NULL, NULL, SW_SHOWNORMAL);
        }
    }
return 0;
}
</code></pre>
<p>So kann ich dann die exe im Hintergrund laufen lassen und mit einem Druck auf F10 schnell ein anderes Programm öffnen.</p>
<p>Allerdings kostet &quot;while(true)&quot; extrem viele Ressourcen. So ist laut Taskmanager meine CPU zu fast 50% mit dem Ausführen dieser exe beschäftigt (da ja zig mal pro Sekunde die Schleife ausgeführt und der Status von F10 geprüft wird).<br />
Gibt es eine Performace sparendere Variante, das Programm zu schreiben?</p>
<p>Mfg Perfora</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638108</guid><dc:creator><![CDATA[Perfora]]></dc:creator><pubDate>Thu, 01 Jan 2009 21:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Thu, 01 Jan 2009 21:03:55 GMT]]></title><description><![CDATA[<p>Benutz doch die Funktion <code>Sleep()</code> , die Zeit an andere Prozesse abgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638112</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 01 Jan 2009 21:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Thu, 01 Jan 2009 22:03:36 GMT]]></title><description><![CDATA[<p>Die sauberste Lösung wäre das Registrieren eines systemweiten Hotkeys (die zuständige Funktion heißt sinnigerweise <a href="http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx" rel="nofollow">RegisterHotKey</a> ;)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638152</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Thu, 01 Jan 2009 22:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Thu, 01 Jan 2009 22:33:02 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>Die sauberste Lösung wäre das Registrieren eines systemweiten Hotkeys (die zuständige Funktion heißt sinnigerweise <a href="http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx" rel="nofollow">RegisterHotKey</a> ;)).</p>
</blockquote>
<p>gute idee.<br />
udn dann braucht man nichtmal was zu programmieren.<br />
das geht so:<br />
- explorer auchmachen und nach C:\Programme\ gehen.<br />
- C:\Programme\Programm.exe nehmen und eine verknupfung auf den desktop oder nach Start/Alle Programme schleppen.<br />
- die verknüpfung bearbeiten und als testenkombination F10 festlegen.<br />
- sich freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638159</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 01 Jan 2009 22:33:02 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 00:50:43 GMT]]></title><description><![CDATA[<p>Erstmal Danke für die Antworten!</p>
<p>Das Performance Prolem lässt sich - wie es Nexus vorgeschlagen hat - durch Sleep() lösen.<br />
Einfach die While schleife um Sleep(1) erweitern und die auslastung geht gegen 0 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Die Lösung mit den Hotkeys ist interessant, allerdings nich für meine zwecke geeignet (ich hab sowohl Programmaufrufe als auch Simulation von Tastendrücken usw)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638186</guid><dc:creator><![CDATA[Perfora]]></dc:creator><pubDate>Fri, 02 Jan 2009 00:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 02:45:38 GMT]]></title><description><![CDATA[<p>Perfora schrieb:</p>
<blockquote>
<p>Die Lösung mit den Hotkeys ist interessant, allerdings nich für meine zwecke geeignet (ich hab sowohl Programmaufrufe als auch Simulation von Tastendrücken usw)</p>
</blockquote>
<p>Ich sehe nicht, inwiefern RegisterHotKey() mit deinem Anwendungsszenario in Konflikt steht.</p>
<p>Die Lösung mit Sleep() ist <a href="http://blogs.msdn.com/oldnewthing/archive/2006/01/24/516808.aspx" rel="nofollow">in jedem Falle zu vermeiden</a>. Wenn dir Hotkeys aus einem mir nicht ersichtlichen Grund nicht ausreichen, benutze einen globalen Tastatur-Hook.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638192</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Fri, 02 Jan 2009 02:45:38 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 03:13:44 GMT]]></title><description><![CDATA[<p>Man könnte auch mit getch() arbeiten :</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;
#include &lt;iostream&gt;

int main()
{
    while(true)
    {
        int ascii = getch();
        if(ascii == 97)
        {
            std::cout &lt;&lt; &quot;wtf&quot;;
        }
    }
}
</code></pre>
<p>Bzw. so würde ich mein Programm bauen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638195</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Fri, 02 Jan 2009 03:13:44 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 03:42:38 GMT]]></title><description><![CDATA[<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>Man könnte auch mit getch() arbeiten :</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;
#include &lt;iostream&gt;

int main()
{
    while(true)
    {
        int ascii = getch();
        if(ascii == 97)
        {
            std::cout &lt;&lt; &quot;wtf&quot;;
        }
    }
}
</code></pre>
<p>Bzw. so würde ich mein Programm bauen...</p>
</blockquote>
<p>Wieso postest du, wenn du offenbar nicht weißt was GetAsyncKeyState macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638196</guid><dc:creator><![CDATA[ohbitte]]></dc:creator><pubDate>Fri, 02 Jan 2009 03:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 06:18:29 GMT]]></title><description><![CDATA[<p>Perfora schrieb:</p>
<blockquote>
<p>Allerdings kostet &quot;while(true)&quot; extrem viele Ressourcen. So ist laut Taskmanager meine CPU zu fast 50% mit dem Ausführen dieser exe beschäftigt (da ja zig mal pro Sekunde die Schleife ausgeführt und der Status von F10 geprüft wird)</p>
</blockquote>
<p>Kauf dir nen PC mit 8 Cores, dann braucht dein Programm nur noch 12.5%. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638212</guid><dc:creator><![CDATA[Objektorientierung _]]></dc:creator><pubDate>Fri, 02 Jan 2009 06:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 15:01:04 GMT]]></title><description><![CDATA[<p>ohbitte schrieb:</p>
<blockquote>
<p>Wieso postest du, wenn du offenbar nicht weißt was GetAsyncKeyState macht?</p>
</blockquote>
<p>Ich weiß was es macht, aber in seinem Programm macht es glaube ich nicht grade Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638394</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Fri, 02 Jan 2009 15:01:04 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 15:18:00 GMT]]></title><description><![CDATA[<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>ohbitte schrieb:</p>
<blockquote>
<p>Wieso postest du, wenn du offenbar nicht weißt was GetAsyncKeyState macht?</p>
</blockquote>
<p>Ich weiß was es macht, aber in seinem Programm macht es glaube ich nicht grade Sinn.</p>
</blockquote>
<p>Nein, du weißt es nicht. Dein Code ist in diesem Fall einfach falsch, da es auf eine Tasteneingabe <strong>in einem Konsolenfenster</strong> wartet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638402</guid><dc:creator><![CDATA[Blubbb]]></dc:creator><pubDate>Fri, 02 Jan 2009 15:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 15:31:31 GMT]]></title><description><![CDATA[<p>Blubbb schrieb:</p>
<blockquote>
<p>Nein, du weißt es nicht. Dein Code ist in diesem Fall einfach falsch, da es auf eine Tasteneingabe <strong>in einem Konsolenfenster</strong> wartet...</p>
</blockquote>
<p>Das ist noch das kleinste Problem. Ich möchte mal sehen, wie er die Taste F10 mit <code>getchar</code> abfängt <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19847">@FreakY</a>&lt;3Cpp,<br />
Wieso macht es in seinem Programm keinen Sinn?<br />
Dein Programm macht überhaupt keinen Sinn, da es nichts mit der Aufgabenstellung zu tun hat.</p>
<p>@Perfora,<br />
RegisterHotKey ist die sinnvollste Lösung. Einfach mit einem NULL Handle registrieren. Dann eine entsprechende Message Queue für deinen Thread, bzw. Prozess einbauen.<br />
<a href="http://msdn.microsoft.com/en-us/library/ms646309.aspx" rel="nofollow">RegisterHotKey - MSDN</a><br />
<a href="http://msdn.microsoft.com/en-us/library/ms644936(VS.85).aspx" rel="nofollow">GetMessage - MSDN</a><br />
<a href="http://msdn.microsoft.com/en-us/library/ms632590(VS.85).aspx" rel="nofollow">Messages and Message Queues - MSDN</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638406</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 02 Jan 2009 15:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 16:13:12 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Das ist noch das kleinste Problem. Ich möchte mal sehen, wie er die Taste F10 mit <code>getchar</code> abfängt <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>
</blockquote>
<p>getch() nahm er. früher machten wir das ungefähr so:</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;
#include &lt;iostream&gt;

int main()
{
    int ascii1=1,ascii2;
    while(true)
    {
        ascii2 = ascii1;
        ascii1 = getch();
        if(ascii2 == 0 &amp;&amp; ascii1='D')
        {
            std::cout &lt;&lt; &quot;wtf&quot;;
        }
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1638435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638435</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 02 Jan 2009 16:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Fri, 02 Jan 2009 16:37:26 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>getch() nahm er. früher machten wir das ungefähr so:</p>
<pre><code class="language-cpp">&quot;wtf&quot;
</code></pre>
</blockquote>
<p>Hab den wesentlichen Teil des Codes drin gelassen. Geile Lösung, aber definitiv nicht mehr sinnvoll heutzutage. Das sind Lösungen von Urgesteinen ... ehm, sry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Aber wenn ich auch die falsche Funktion gelesen habe, ich glaube nicht, dass FreakY&lt;3Cpp deine Lösung im Hinterkopf hatte. Er prüft ja auch auf ein 'a'.</p>
<p>Bei deiner Lösung bleibt aber das Problem, dass die Konsole den Fokus haben muss. <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="😉"
    /><br />
Und es wurden bereits sinnvollere Lösungen vorgeschlagen. Also ziemlich fraglich.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638447</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 02 Jan 2009 16:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sat, 03 Jan 2009 14:55:24 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>Die Lösung mit Sleep() ist <a href="http://blogs.msdn.com/oldnewthing/archive/2006/01/24/516808.aspx" rel="nofollow">in jedem Falle zu vermeiden</a>.</p>
</blockquote>
<p>&quot;In jedem Falle&quot; finde ich unangebracht.</p>
<p>Was, wenn ein Programm eine ständige Abfrage von Benutzereingaben benötigt, beispielsweise ein Spiel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638841</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 03 Jan 2009 14:55:24 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sat, 03 Jan 2009 17:02:01 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Dravere schrieb:</p>
<blockquote>
<p>Das ist noch das kleinste Problem. Ich möchte mal sehen, wie er die Taste F10 mit <code>getchar</code> abfängt <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>
</blockquote>
<p>getch() nahm er. früher machten wir das ungefähr so:</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;
#include &lt;iostream&gt;

int main()
{
    int ascii1=1,ascii2;
    while(true)
    {
        ascii2 = ascii1;
        ascii1 = getch();
        if(ascii2 == 0 &amp;&amp; ascii1='D')
        {
            std::cout &lt;&lt; &quot;wtf&quot;;
        }
    }
}
</code></pre>
</blockquote>
<p>Habe diese Lösung jetzt nicht getestet, aber nehme mal an das sie funktioniert und es sich nicht um einen Scherz handelt.</p>
<p>Daher die Frage: Warum funktioniert das so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638898</guid><dc:creator><![CDATA[Macccy]]></dc:creator><pubDate>Sat, 03 Jan 2009 17:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sat, 03 Jan 2009 17:12:01 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>audacia schrieb:</p>
<blockquote>
<p>Die Lösung mit Sleep() ist <a href="http://blogs.msdn.com/oldnewthing/archive/2006/01/24/516808.aspx" rel="nofollow">in jedem Falle zu vermeiden</a>.</p>
</blockquote>
<p>&quot;In jedem Falle&quot; finde ich unangebracht.</p>
<p>Was, wenn ein Programm eine ständige Abfrage von Benutzereingaben benötigt, beispielsweise ein Spiel?</p>
</blockquote>
<p>Spiele sind vielleicht ein Sonderfall, schon allein da sie zu den ganz wenigen Programmen gehören, für die akzeptabel sein kann, dauerhaft ~100% der verfügbaren Rechenleistung zu verbrauchen.</p>
<p>Trotzdem würde ich die Aussage mit &quot;in jedem Fall vermeiden&quot; so unterschreiben. Es zu vermeiden heißt ja nur, daß man es anders macht, wenn es denn anders geht und sinnvoll ist. Aber... wat mutt, dat mutt <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/1638902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638902</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Sat, 03 Jan 2009 17:12:01 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sat, 03 Jan 2009 17:58:01 GMT]]></title><description><![CDATA[<p>dooooomi schrieb:</p>
<blockquote>
<p>Spiele sind vielleicht ein Sonderfall, schon allein da sie zu den ganz wenigen Programmen gehören, für die akzeptabel sein kann, dauerhaft ~100% der verfügbaren Rechenleistung zu verbrauchen.</p>
</blockquote>
<p>Auch das stimmt so nicht. Die wenigsten Spiele lasten die CPU zu annähernd 100% aus. Gerade, wenn <code>Sleep()</code> oder ähnliche Funktionen benutzt werden, um Zeit abzugeben.</p>
<p>dooooomi schrieb:</p>
<blockquote>
<p>Trotzdem würde ich die Aussage mit &quot;in jedem Fall vermeiden&quot; so unterschreiben. Es zu vermeiden heißt ja nur, daß man es anders macht, wenn es denn anders geht und sinnvoll ist. Aber... wat mutt, dat mutt <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>
</blockquote>
<p>Unter &quot;vermeiden&quot; verstehe ich, etwas nicht zu tun, und nicht, sich wenn möglich nach sinnvolleren Alternativen umzuschauen. Vor allem, wenn es noch durch &quot;in jedem Fall&quot; unterstrichen wird... <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>Aber mal davon abgesehen kann ich mir auch bei anderen Programmen vorstellen, dass man <code>Sleep</code> -ähnliche Funktionalität nutzt. Bei GUI beispielsweise. Wenn man einen Texteditor hat und dieser im Fokus ist, müssen ja auch andauernd Benutzereingaben abgefangen werden. Um keine 100%-CPU-Endlosschleife zu haben, rät sich da <code>Sleep()</code> schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638939</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 03 Jan 2009 17:58:01 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sat, 03 Jan 2009 18:35:14 GMT]]></title><description><![CDATA[<p>&quot;In jedem Falle&quot; war bezogen auf die ungeklärt vielfältigen Vorhaben des Threaderstellers. Dennoch trifft die Empfehlung auch allgemein auf GUI- und Konsolenanwendungen zu.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Aber mal davon abgesehen kann ich mir auch bei anderen Programmen vorstellen, dass man <code>Sleep</code> -ähnliche Funktionalität nutzt. Bei GUI beispielsweise. Wenn man einen Texteditor hat und dieser im Fokus ist, müssen ja auch andauernd Benutzereingaben abgefangen werden. Um keine 100%-CPU-Endlosschleife zu haben, rät sich da <code>Sleep()</code> schon.</p>
</blockquote>
<p>Welcher Interaktionsaspekt eines Texteditors kann nicht mit dem konventionellen Message-Konzept abgedeckt werden, sondern erfordert Polling?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638956</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sat, 03 Jan 2009 18:35:14 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sat, 03 Jan 2009 19:38:25 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>dooooomi schrieb:</p>
<blockquote>
<p>Spiele sind vielleicht ein Sonderfall, schon allein da sie zu den ganz wenigen Programmen gehören, für die akzeptabel sein kann, dauerhaft ~100% der verfügbaren Rechenleistung zu verbrauchen.</p>
</blockquote>
<p>Auch das stimmt so nicht. Die wenigsten Spiele lasten die CPU zu annähernd 100% aus. Gerade, wenn <code>Sleep()</code> oder ähnliche Funktionen benutzt werden, um Zeit abzugeben.</p>
</blockquote>
<p>Das liegt dann aber vor allem daran, daß die CPU in Spielen heutzutage nicht unbedingt der limitierende Faktor ist. Trotzdem werden Spiele (und ich meine jetzt &quot;richtige&quot; Spiele, nicht Solitär oder irgendwelche Flash-Spielereien) nach wie so programmiert, als wenn sie den Rechner für sich alleine hätten. Denn wer will sich schon mit 200 FPS zufrieden geben, wenn man auch 201 haben kann? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>audacia schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Aber mal davon abgesehen kann ich mir auch bei anderen Programmen vorstellen, dass man <code>Sleep</code> -ähnliche Funktionalität nutzt. Bei GUI beispielsweise. Wenn man einen Texteditor hat und dieser im Fokus ist, müssen ja auch andauernd Benutzereingaben abgefangen werden. Um keine 100%-CPU-Endlosschleife zu haben, rät sich da <code>Sleep()</code> schon.</p>
</blockquote>
<p>Welcher Interaktionsaspekt eines Texteditors kann nicht mit dem konventionellen Message-Konzept abgedeckt werden, sondern erfordert Polling?</p>
</blockquote>
<p>Das frage ich mich allerdings auch. Gerade Texteditoren sind doch das perfekte Beispiel für Programme, die den größten Teil ihrer Zeit nichts anderes machen müssen, als auf die nächste Benutzereingabe zu warten, und wo Polling völlig überflüssig ist. Selbst beim normalen Tippen vergeht zwischen zwei Tastendrücken aus Sicht des Rechners eine lange Zeit, in der er sich genauso gut einfach schlafen legen kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638980</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Sat, 03 Jan 2009 19:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Performance von Endlosschleife on Sun, 04 Jan 2009 00:14:57 GMT]]></title><description><![CDATA[<p>Macccy schrieb:</p>
<blockquote>
<p>Habe diese Lösung jetzt nicht getestet, aber nehme mal an das sie funktioniert und es sich nicht um einen Scherz handelt.<br />
Daher die Frage: Warum funktioniert das so?</p>
</blockquote>
<p>ich scherze nie. ich weiß nichtmal, wie man &quot;Scherz&quot; schreibt.<br />
getch() liefert traditionell den ascii-code der gedrückten taste zurück. und irgendwann kamen die leute auf die spßige idee, den tastaturen sogar tasten zu verpassen, dennen kein ascii-code zugeordnet werden kann, wie zum beispiel cursortasten und so. was machen mit getch()? die pfiffige lösung war, daß getch() dann einfach eine 0 zurückgibt und in der darauf folgenden abfrage den &quot;erweiterten getch()-code&quot; (oder wie soll ich das nennen) zurückgibt, der dann sagt, welche corsortaste oder sondertaste es war. das ist schon alles.<br />
hat aber nix mit der frage des threaderstellers zu tun, der wollte nämlich nicht F10 für sein eigenes prog abfragen, sondern wollte ein helferlein, das im hintergrund läuft während er in word programmiert und aktiv wird, wenn er F10 drückt und dann zum beispiel seine postalische adresse eintippt (das helferlein tippt die adresse).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639085</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 04 Jan 2009 00:14:57 GMT</pubDate></item></channel></rss>