<?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[Erstellen einer Message Queue]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe nun folgendes Problem:<br />
Ich habe mir einen Thread erstellt:<br />
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)handle_error, 0, 0,<br />
&amp;threadId);<br />
Nun will ich mit dem handle_error kommunizieren.<br />
Dabei habe ich mir nun folgendes überlegt, ich baue mir eine einfache<br />
MessageQueue auf.<br />
Wie realisiert man so eine Message-Queue?<br />
Das Zeil ist natürlich mit dem error_handle und der main routine zu<br />
kommunizieren.</p>
<p>System:<br />
Windows XP mit mingw/g++</p>
<p>Grüße und Danke für eure Hilfe<br />
Tentone</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217400/erstellen-einer-message-queue</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 11:10:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217400.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Jul 2008 12:35:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erstellen einer Message Queue on Mon, 07 Jul 2008 12:35:56 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe nun folgendes Problem:<br />
Ich habe mir einen Thread erstellt:<br />
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)handle_error, 0, 0,<br />
&amp;threadId);<br />
Nun will ich mit dem handle_error kommunizieren.<br />
Dabei habe ich mir nun folgendes überlegt, ich baue mir eine einfache<br />
MessageQueue auf.<br />
Wie realisiert man so eine Message-Queue?<br />
Das Zeil ist natürlich mit dem error_handle und der main routine zu<br />
kommunizieren.</p>
<p>System:<br />
Windows XP mit mingw/g++</p>
<p>Grüße und Danke für eure Hilfe<br />
Tentone</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542587</guid><dc:creator><![CDATA[Tentone]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:35:56 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen einer Message Queue on Mon, 07 Jul 2008 12:42:43 GMT]]></title><description><![CDATA[<p>du vergaßt uns aus dem regnerischen bayern zu grüßen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542595</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen einer Message Queue on Mon, 07 Jul 2008 12:58:26 GMT]]></title><description><![CDATA[<p>sothis_ schrieb:</p>
<blockquote>
<p>du vergaßt uns aus dem regnerischen bayern zu grüßen</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="😃"
    /><br />
Stimmt, aber mittlerweile scheint die Sonne und es windet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542618</guid><dc:creator><![CDATA[Tentone]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen einer Message Queue on Mon, 07 Jul 2008 18:05:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie realisiert man so eine Message-Queue?</p>
</blockquote>
<p>Queue (z.B. std::list oder std::deque) + Mutex (z.B. boost::mutex) + Condition-Variable (z.B. std::condition) + etwas eigener Code ==&gt; thread-safe blocking message-queue.</p>
<p>Grob:</p>
<pre><code class="language-cpp">void msg_queue::insert(msg const&amp; m)
{
    scoped_lock l(m_mutex);
    while (is_queue_full())
        m_cond_not_full.wait(l);

    m_queue.push_front(m);

    m_cond_not_empty.signal_all();
}

void msg_queue::get_message(msg&amp; m)
{
    scoped_lock l(m_mutex);
    while (is_queue_empty())
        m_cond_not_empty.wait(l);

    m = m_queue.back();
    m_queue.pop_back();

    m_cond_not_full.signal_all();
}
</code></pre>
<p>Oder aber du nimmst eine fertige Implementierung (frag mich nicht nach einer Empfehlung, kann ich keine bieten). Oder natürlich gleich eine ganz normale Windows Message Queue. Dazu macht man üblicherweise ein unsichtbares Fenster auf, und dann halt einfach PostMessage/GetMessage/PeekMessage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542938</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 07 Jul 2008 18:05:14 GMT</pubDate></item></channel></rss>