<?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[Rechenzeit für eine Callback-Funktion]]></title><description><![CDATA[<p>Soweit mir bisher bekannt ist, werden die für eine Anwendung anfallenden Messages irgendwo in einem Stapel gespeichert, wo sie dann GetMessage oder PeekMessage abholen und an eine Callback Funktion weiterschicken. Die Callback Funktion reagiert dann (hoffentlich) massgeschneidert auf die Messages, die sie interessieren. Irgendwann, jedenfalls möglichst binnen Millisekunden, kehrt dann das Programm in die Message-Loop zurück, wenn die Callback Funktion (z.B. eine Fensternachrichtenverarbeitungsfunktion für ein Hauptfenster) irgendein LRESULT mit return zurückgibt. Mich würde jetzt interessieren, wie viel Rechenzeit der Callback-Funktion zusteht, bis sie einen Wert zurückgeben muss (ungefähr in Millisekunden). Ich habe nämlich die Befürchtung, wenn ich den KI in meinem Game (<a href="http://www.geocities.com/c_pruell/MecnelsTactics.zip" rel="nofollow">http://www.geocities.com/c_pruell/MecnelsTactics.zip</a>) verbessern möchte, komme ich nicht darum herum, die Zugberechnungsfunktion des Programmes möglicherweise für mehrere Sekunden rechnen lassen zu müssen, aber erfahrungsgemäß stürzt ein Programm dann ja ab, wenn die Callback-Funktion nicht binnen kürzester Zeit die Kontrolle an die MessageLoop bzw. das Betriebssystem zurückgibt. Trotzdem ist es beispielsweise in kommerziellen Schachprogrammen möglich, dass der Computergegner mehrere Sekunden an einem Zug rechnet, OHNE dass sich das Programm deshalb aufhängt.</p>
<p>Möglicherweise müsste eine langwierige Berechnung in viele Teilberechnungen zerlegt werden, die die Callback-Funktion in der ihr zur Verfügung stehenden Zeit bewältigen kann, wobei sie sich nach Abschluss einer Teilberechnung einfach selber eine WM_TIMER Message postet, falls noch kein Endergebnis erzielt werden konnte, um die Berechnung dann als Antwort auf WM_TIMER fortzuführen. Hier mein Problem: Bleibt mir bei diesem Lösungsversuch als Programmierer nichts besseres, als ungefähr zu schätzen, wieviel Rechenzeit meiner Callback Funktion zusteht, bevor sie zurückkehrt, oder gibt es für mein Problem (ein Programm muss möglicherweise länger an der Findung eines Zuges rechnen als seiner Callback-Funktion an Rechenzeit zusteht) eine andere Lösung? Hat das möglicherweise etwas mit Unterthreads der Anwendung zu tun?<br />
Ein guter Link zu einer Seite, die sich mit meinem Problem befasst, würde mir schon gewaltig weiterhelfen, oder vielleicht könnt ihr das auch so kurz erläutern, wie ihr in diesem Falle vorgehen würdet?<br />
Danke im voraus. <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/topic/97096/rechenzeit-für-eine-callback-funktion</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 05:19:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/97096.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Jan 2005 13:01:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rechenzeit für eine Callback-Funktion on Fri, 07 Jan 2005 13:01:23 GMT]]></title><description><![CDATA[<p>Soweit mir bisher bekannt ist, werden die für eine Anwendung anfallenden Messages irgendwo in einem Stapel gespeichert, wo sie dann GetMessage oder PeekMessage abholen und an eine Callback Funktion weiterschicken. Die Callback Funktion reagiert dann (hoffentlich) massgeschneidert auf die Messages, die sie interessieren. Irgendwann, jedenfalls möglichst binnen Millisekunden, kehrt dann das Programm in die Message-Loop zurück, wenn die Callback Funktion (z.B. eine Fensternachrichtenverarbeitungsfunktion für ein Hauptfenster) irgendein LRESULT mit return zurückgibt. Mich würde jetzt interessieren, wie viel Rechenzeit der Callback-Funktion zusteht, bis sie einen Wert zurückgeben muss (ungefähr in Millisekunden). Ich habe nämlich die Befürchtung, wenn ich den KI in meinem Game (<a href="http://www.geocities.com/c_pruell/MecnelsTactics.zip" rel="nofollow">http://www.geocities.com/c_pruell/MecnelsTactics.zip</a>) verbessern möchte, komme ich nicht darum herum, die Zugberechnungsfunktion des Programmes möglicherweise für mehrere Sekunden rechnen lassen zu müssen, aber erfahrungsgemäß stürzt ein Programm dann ja ab, wenn die Callback-Funktion nicht binnen kürzester Zeit die Kontrolle an die MessageLoop bzw. das Betriebssystem zurückgibt. Trotzdem ist es beispielsweise in kommerziellen Schachprogrammen möglich, dass der Computergegner mehrere Sekunden an einem Zug rechnet, OHNE dass sich das Programm deshalb aufhängt.</p>
<p>Möglicherweise müsste eine langwierige Berechnung in viele Teilberechnungen zerlegt werden, die die Callback-Funktion in der ihr zur Verfügung stehenden Zeit bewältigen kann, wobei sie sich nach Abschluss einer Teilberechnung einfach selber eine WM_TIMER Message postet, falls noch kein Endergebnis erzielt werden konnte, um die Berechnung dann als Antwort auf WM_TIMER fortzuführen. Hier mein Problem: Bleibt mir bei diesem Lösungsversuch als Programmierer nichts besseres, als ungefähr zu schätzen, wieviel Rechenzeit meiner Callback Funktion zusteht, bevor sie zurückkehrt, oder gibt es für mein Problem (ein Programm muss möglicherweise länger an der Findung eines Zuges rechnen als seiner Callback-Funktion an Rechenzeit zusteht) eine andere Lösung? Hat das möglicherweise etwas mit Unterthreads der Anwendung zu tun?<br />
Ein guter Link zu einer Seite, die sich mit meinem Problem befasst, würde mir schon gewaltig weiterhelfen, oder vielleicht könnt ihr das auch so kurz erläutern, wie ihr in diesem Falle vorgehen würdet?<br />
Danke im voraus. <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/689659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689659</guid><dc:creator><![CDATA[Mecnels]]></dc:creator><pubDate>Fri, 07 Jan 2005 13:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to Rechenzeit für eine Callback-Funktion on Fri, 07 Jan 2005 13:41:10 GMT]]></title><description><![CDATA[<p>Schachprogramme lassen die Berechnungen wahrscheinlich in einem zweiten Thread laufen (FAQ, Forensuche).</p>
<p>Dann kann die Messageloop nämlich ganz normal weiterarbeiten und Nachrichten zeitnah bearbeiten, obwohl &quot;im Hintergrund&quot; eine aufwändige Berechnung läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/689707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689707</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 07 Jan 2005 13:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Rechenzeit für eine Callback-Funktion on Fri, 07 Jan 2005 13:42:12 GMT]]></title><description><![CDATA[<p>Die Callback Funktion kann so lange brauchen wie sie will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/689711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689711</guid><dc:creator><![CDATA[ffff]]></dc:creator><pubDate>Fri, 07 Jan 2005 13:42:12 GMT</pubDate></item><item><title><![CDATA[Reply to Rechenzeit für eine Callback-Funktion on Fri, 07 Jan 2005 15:30:58 GMT]]></title><description><![CDATA[<p>Eigentlich hat ffff recht. Laut Charles Petzold sollte sie aber spätestens nach 10ms (IIRC) zurückkehren, damit der Benutzer keine Verzögerungen bemerkt.</p>
<blockquote>
<p>aber erfahrungsgemäß stürzt ein Programm dann ja ab, wenn die Callback-Funktion nicht binnen kürzester Zeit die Kontrolle an die MessageLoop bzw. das Betriebssystem zurückgibt</p>
</blockquote>
<p>schwachsinn, es reagiert nur so lange nicht mehr auf Benutzeraktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/689861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689861</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Fri, 07 Jan 2005 15:30:58 GMT</pubDate></item><item><title><![CDATA[Reply to Rechenzeit für eine Callback-Funktion on Fri, 07 Jan 2005 15:37:55 GMT]]></title><description><![CDATA[<p>ffff schrieb:</p>
<blockquote>
<p>Die Callback Funktion kann so lange brauchen wie sie will.</p>
</blockquote>
<p>Bist Du Dir ganz sicher, dass die Funktion so lange brauchen kann wie sie will? Dann könnte mein Programm einfach, sagen wir mal, eine Zugtiefe von 4 oder 5 Halbzügen erreichen, OHNE aus der Callback-Funktion zurück zu kehren. Dann könnten in dieser Zeit aber auch keine Benutzereingaben verarbeitet werden, richtig? Kann der Stapel, der die Messages für eine Anwendung speichert, ziemlich leicht einen OVERFLOW haben, oder dauert das doch viel länger als ein paar Millisekunden?</p>
<p>Jedenfalls danke für die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/689872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689872</guid><dc:creator><![CDATA[Mecnels]]></dc:creator><pubDate>Fri, 07 Jan 2005 15:37:55 GMT</pubDate></item><item><title><![CDATA[Reply to Rechenzeit für eine Callback-Funktion on Fri, 07 Jan 2005 17:08:19 GMT]]></title><description><![CDATA[<p>Ich weiß nicht ob es ein Limit bei der Message Queue Größe gibt. Unter 16-Bit Windows gab es eine Funktion SetMessageQueue mit der man die Größe festlegen kann. Unter 32-Bit Windows wird sie automatisch erweitert.</p>
<blockquote>
<p>Message queues are expanded as needed.</p>
</blockquote>
<p>Aber trotz alledem würde ich auch einen Thread zur Berechnung nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/689975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689975</guid><dc:creator><![CDATA[ffff]]></dc:creator><pubDate>Fri, 07 Jan 2005 17:08:19 GMT</pubDate></item></channel></rss>