<?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[message queue overflow?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>nehmen wir an, ich Poste ununterbrochen Windows messages &quot;PostMessage&quot; an eine fenster, und zwar in einem schnelleren intervall wie das fenster diese messages bearbeiten kann. Was passiert dann .. gibts dann man ein overflow?</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215176/message-queue-overflow</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 20:59:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215176.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jun 2008 10:19:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to message queue overflow? on Sat, 07 Jun 2008 10:19:02 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>nehmen wir an, ich Poste ununterbrochen Windows messages &quot;PostMessage&quot; an eine fenster, und zwar in einem schnelleren intervall wie das fenster diese messages bearbeiten kann. Was passiert dann .. gibts dann man ein overflow?</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524566</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sat, 07 Jun 2008 10:19:02 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Sat, 07 Jun 2008 10:22:21 GMT]]></title><description><![CDATA[<p>PostMessage wird wahrscheinlich einfach fehlschlagen. Standardlimit bei 2000/XP ist 10000 Nachrichten, siehe Doku.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524569</guid><dc:creator><![CDATA[???????????]]></dc:creator><pubDate>Sat, 07 Jun 2008 10:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Sat, 07 Jun 2008 11:32:38 GMT]]></title><description><![CDATA[<p>Probiers doch einfach aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524601</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Sat, 07 Jun 2008 11:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Sat, 07 Jun 2008 15:47:43 GMT]]></title><description><![CDATA[<p>edel wärs , wenn er ne neue message mit der gleichen ID verwerfen würde, solange noch eine mit der selben id in berabeitung ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524706</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sat, 07 Jun 2008 15:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Mon, 09 Jun 2008 10:13:40 GMT]]></title><description><![CDATA[<p>PostMessage müßte false zurückgeben.</p>
<blockquote>
<p>&gt; edel wärs , wenn er ne neue message mit der gleichen ID verwerfen würde, solange noch eine mit der selben id in berabeitung ist...<br />
neeeee, blöde wär's <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>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1525603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525603</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Mon, 09 Jun 2008 10:13:40 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Mon, 09 Jun 2008 10:45:35 GMT]]></title><description><![CDATA[<p>nicht in meinem fall;) echt macht das PostMessage.. das ist gut;) :schland: :schland: :schland: :schland: :schland:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525627</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 09 Jun 2008 10:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Mon, 09 Jun 2008 10:54:45 GMT]]></title><description><![CDATA[<blockquote>
<p>gibts dann man ein overflow?</p>
</blockquote>
<p><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>PostMessage() reiht die Message in die Nachrichtenwarteschlange ein.<br />
Ob und wie schnell die Applikation die Nachrichten dann bearbeitet, ist Sache des Programmes. Also einen Overflow wie du meinst gibt es sicher nicht.</p>
<blockquote>
<p>Standardlimit bei 2000/XP ist 10000 Nachrichten</p>
</blockquote>
<p>Genau. MessageQueue voll -&gt; PostMessage() = false.</p>
<p>Das ist alles. Kein Overflow und auch sonst nichts aufregendes.</p>
<p>Ooohhhh *Enttäuschung*.... :p<br />
So leicht gibt sich Windows dann doch nicht geschlagen hehe. <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/1525633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525633</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 09 Jun 2008 10:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Mon, 09 Jun 2008 13:55:02 GMT]]></title><description><![CDATA[<p>naja wie kann ich prüfen ob bereit ne message mit meine ID in der queue ist ? geht das? wenn eine drin ist soll er keine Postmessage machen... :schland:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525754</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 09 Jun 2008 13:55:02 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Tue, 10 Jun 2008 14:47:07 GMT]]></title><description><![CDATA[<blockquote>
<p>&gt; wie kann ich prüfen ob bereit ne message mit meine ID in der queue ist ?</p>
</blockquote>
<p>Kannst Du nicht.<br />
Wenn Du die Instanz so zuballerst, solltest Du vielleicht mit den messages etwas zurückhaltender sein, dazu müßte man aber wissen, was Du machst.</p>
<p>Eine Möglichkeit wäre eine Rückmeldung an den Absender, wenn die Message bearbeitet wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526460</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Tue, 10 Jun 2008 14:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Tue, 10 Jun 2008 15:45:35 GMT]]></title><description><![CDATA[<p>Boris willst du hier ne DOS-Attacke auf dein eignes Programm starten? <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>WilMen <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/1526506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526506</guid><dc:creator><![CDATA[WilMen]]></dc:creator><pubDate>Tue, 10 Jun 2008 15:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 09:27:51 GMT]]></title><description><![CDATA[<blockquote>
<p>naja wie kann ich prüfen ob bereit ne message mit meine ID in der queue ist ? geht das? wenn eine drin ist soll er keine Postmessage machen</p>
</blockquote>
<p>Mit PeekMessage geht das. Allerdings vermutlich nur aus dem Thread dem das Fenster gehört, bzw. um dessen Message Queue es sich eben handelt. Guckst du MSDN.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526711</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 11 Jun 2008 09:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 06:09:51 GMT]]></title><description><![CDATA[<p>Es bleibt dabei: Die beste Methode ist es immer noch kene Nachricht zu versenden, wenn dies nicht nötig ist... und das bekommt man auch hin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526753</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 11 Jun 2008 06:09:51 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 07:18:12 GMT]]></title><description><![CDATA[<p>ok folgendes.. habe einen thread, welcher in einem best. itnervall daten liest und via message an ein fensts Postet. das fenster musst dann die message in eine grafik schmeisen. Wenn nun das fenster länger braucht als der thread intervall ist .. werden immer mehr message gepostest, obwohl das fesnter nich nachkommt mit neuzeichnen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526780</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 11 Jun 2008 07:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 07:52:29 GMT]]></title><description><![CDATA[<p>Habe ich schon mal gepostet:<br />
Pseudocode:</p>
<p>Workerthread:</p>
<pre><code>if (DatenDa)
{
   LockDatenBereich();
   DatenEinfügenin Übergabestruktur;
   if (!UIDatenReady)
   {
      UIDatenReady = true;
      PostMessage UIHatDaten an UI Thread;
   }
}
</code></pre>
<p>UI Thread:</p>
<pre><code>UIHatDatenMessageHandler()
{
   // Dienächsten 4 Zeilen müssen schnell gehen, damit Workerthread nicht gebremst wird.
   LockDatenBereich();
   Daten aus Übergabestruktur lesen;
   UIDatenReady = false;
   UnlockDatenBereich();

   Invalidate(UIFenster);
}
</code></pre>
<p>Mit dieser Methode ist immer nur eine Message in der Queue!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526798</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 11 Jun 2008 07:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 08:11:43 GMT]]></title><description><![CDATA[<p>interssant die variable UIDatenReady wird als refernz über die übergabestruktur vom thread aus bereit gestellt?</p>
<p>Aber Martin, nehmen wir an die Invalidate(UIFenster); geht lang? dann kann der thread ja trozdem ne message schicken?</p>
<p>das UIReady flag wird ja als kopie übergeben oder , das kann auch net gehen?</p>
<p>kann ich SendMessageTimeout nich in thread verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526803</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 11 Jun 2008 08:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 08:36:54 GMT]]></title><description><![CDATA[<p>1. Invalidate geht nie lange!<br />
2. Macht es nichts, denn dann läuft eben eine neue Nachricht ein, und das ist doch OK. Aber eben nicht mehr, denn dann ist das Flag gesetzt.<br />
3. UIDatenReady ist natürlich eine globale/klassenbezogene Variable, mit der Daten zwischen Thread und UI ausgetauscht werden. Wo steht, dass dies eine Kopie ist?<br />
4. SendMessageTimeout und damit Deinen WorkerThread abbremsen? Was willst Du eigentlich? Schnell sein oder lahm? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Warum auf ein Timeout warten, wenn man gar keines benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526822</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 11 Jun 2008 08:36:54 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 08:49:13 GMT]]></title><description><![CDATA[<p>servus martin, dachte das UIReady flag ist eine membervariabel des workerthread.. welche ich über die message verschicke.. d.h. ich muss die variable global für die workerthread klasse und fenster machen?</p>
<p>naja der Thread hat einen intervall von minimal 1 sekunde... die datenaktualiierung im fenster wird sicher so bei 10ms liegen;) aber es kann ja mal unter umständen was hängen...</p>
<p>ja und Sendmessagetimeout ist nicht geignet für trhead fenster kommunikation?</p>
<p>nehmen wir an, mein intervall des leseoperation ist nie kleiner 1 sek, und ich würde dem SendMessagetimout 500millisekunden timerout gehben.. dann wäre das ganze ja schonmal syncron... was würde passieren wenn die prozedur in der Messagefunktion länger als 500ms geht? wird dann die funktion abgebrochen???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526826</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 11 Jun 2008 08:49:13 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 09:23:02 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>servus martin, dachte das UIReady flag ist eine membervariabel des workerthread.. welche ich über die message verschicke.. d.h. ich muss die variable global für die workerthread klasse und fenster machen?</p>
</blockquote>
<p>Du hast doch irgendwo die Daten liegen, die Du austauscht. Pack das Flag dazu, esgehört ja zu den Daten.<br />
Was weiß ich wie Du Deine Klassen zusammenbaust. Ja genauso wie die CirticalSection, die benötigt wird, muss das Flag in irgend einer Form für beide Klassen zugänglich sein, d.h. nich unbedingt global! <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>BorisDieKlinge  schrieb:</p>
<blockquote>
<p>naja der Thread hat einen intervall von minimal 1 sekunde... die datenaktualiierung im fenster wird sicher so bei 10ms liegen;) aber es kann ja mal unter umständen was hängen...</p>
</blockquote>
<p>Dan gibt es aber kein Problem mit dem Overflow. 2 PostMessage hintereinander liegen ja dann 2 Sekunden auseinander. Warum reden wir hier eigentlich? <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>BorisDieKlinge  schrieb:</p>
<blockquote>
<p>ja und Sendmessagetimeout ist nicht geignet für trhead fenster kommunikation?</p>
</blockquote>
<p>JA!</p>
<p>BorisDieKlinge  schrieb:</p>
<blockquote>
<p>nehmen wir an, mein intervall des leseoperation ist nie kleiner 1 sek, und ich würde dem SendMessagetimout 500millisekunden timerout gehben.. dann wäre das ganze ja schonmal syncron... was würde passieren wenn die prozedur in der Messagefunktion länger als 500ms geht? wird dann die funktion abgebrochen???</p>
</blockquote>
<p>Du missverstehst das Ganze. Das Problem ist, dass SendMesageTimeOut auf den Empfänger wartet. Grundsätzlich die Frage: Warum sollte der Workerthread auf irgendwas warten was er vermeiden kann?<br />
Nur mal so am Rande? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526855</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 11 Jun 2008 09:23:02 GMT</pubDate></item><item><title><![CDATA[Reply to message queue overflow? on Wed, 11 Jun 2008 09:57:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Du missverstehst das Ganze. Das Problem ist, dass SendMesageTimeOut auf den Empfänger wartet. Grundsätzlich die Frage: Warum sollte der Workerthread auf irgendwas warten was er vermeiden kann?</p>
</blockquote>
<p>Hab das schon verstanden, das in der Threadloop der thread hier:</p>
<pre><code class="language-cpp">SendMessageTimout(......,500); //&lt;-- WARTET
</code></pre>
<p>wenn die operation in der messagefunktion des fesnter nur 10ms geht, dann muss der thread ja nur 10ms warten, wenn die operation da &gt;=500ms dauert, dann warte der thread hier max. 500ms so ist er richtig oder?</p>
<p>Aber was passiert in der messagefunktion &gt; 500ms braucht, wird dann aprupt da abgebrochen? sorry für die fragen.. aber das interessiert mich jetzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> :schland:</p>
<p>P.S.: was ist mit der</p>
<p>SendMessageCallback funktion</p>
<p>ich köntne doch damit ein message schicken.. und ein flag im trhead setzen der thread würde weiter arbeiten, allerdings wir nun erst nur wieder ne nachricht schicken wenn das falg resetet wird, undd as köntne iuch mit der SendAsyncProc tun? was meisnt martin.. oder spinn ich jetzt ganz??? :p :p</p>
<pre><code class="language-cpp">void CALLBACK Reset(HWND hwnd, UINT uMsg, DWORD dwData, LRESULT lResult){
 boReady=true;
}

threadloop(){

if(boReady){
::SendMessageCallback(hWnd,WM_USER+100,0,0L,Reset,0);
boReady=false; 
}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1526873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526873</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 11 Jun 2008 09:57:15 GMT</pubDate></item></channel></rss>