<?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[Threads synchronisieren]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>habe zwei Threads - laufen auch meistens prima...<br />
der zweite Thread wird vom ersten gestartet, beide workeln so vor sich hin und wenn der erste Thread seine Hauparbeit getan hat, dann wartet er noch auf den zweiten. Sobald der fertig ist, macht der erste die Abschlußarbeiten und wird ebenfalls beendet! Soweit so schön! Die beiden Threads verständigen sich über globale Variablen. Man kann die Threads als Nutzer auch abbrechen, was die Threads ebenfalls über die Abfrage diverser globaler Variablen mitbekommen.</p>
<p>Das Problem ist nun: Manchmal verheddert sich der ganze Kram irgendwie! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Daher möchte ich wissen, ob es eine professionellere Lösung für mein Synchronisationsproblem gibt und wie die aussieht!?!</p>
<p>Vielen Dank schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179205/threads-synchronisieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 00:21:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179205.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Apr 2007 12:36:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 12:36:37 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>habe zwei Threads - laufen auch meistens prima...<br />
der zweite Thread wird vom ersten gestartet, beide workeln so vor sich hin und wenn der erste Thread seine Hauparbeit getan hat, dann wartet er noch auf den zweiten. Sobald der fertig ist, macht der erste die Abschlußarbeiten und wird ebenfalls beendet! Soweit so schön! Die beiden Threads verständigen sich über globale Variablen. Man kann die Threads als Nutzer auch abbrechen, was die Threads ebenfalls über die Abfrage diverser globaler Variablen mitbekommen.</p>
<p>Das Problem ist nun: Manchmal verheddert sich der ganze Kram irgendwie! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Daher möchte ich wissen, ob es eine professionellere Lösung für mein Synchronisationsproblem gibt und wie die aussieht!?!</p>
<p>Vielen Dank schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269236</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 12:36:37 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 12:43:03 GMT]]></title><description><![CDATA[<p>Besser als globale Variablen? Auf jeden Fall.</p>
<p>Ich würde Events, Critical Sections etc zur Synchronisation der Threads verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269244</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 19 Apr 2007 12:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 15:13:40 GMT]]></title><description><![CDATA[<p>Vielen Dank für den Tiüp CStoll!</p>
<p>critical section scheint das zu sein was ich brauche - bloß wie geht das am einfachsten? Meine Threads sind MFC-Threads...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269344</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 15:13:40 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 15:53:56 GMT]]></title><description><![CDATA[<p>Also welche Art von Thread ist erstmal egal.<br />
Die CriticalSection denke ich, brauchst du nicht.<br />
Nach deiner Beschreibung würde eher CEvent und WaitForSingleObject passen.<br />
Du legst ein Event an, das ist erstmal nonsignaled.</p>
<p>Wenn dein erster Thread die Arbeit getan hat, wartet er darauf, dass das Event auf signaled steht, bevor er weiter macht. Das Event auf signaled stellen macht dein zweiter Thread dann einfach am Ende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269378</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 19 Apr 2007 15:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 15:59:53 GMT]]></title><description><![CDATA[<p>so ähnlich mache ich es jetzt, wobei ich als &quot;Signal&quot; halt eine globale Variable verwende. Jetzt wäre die Frage, was ist das für ein &quot;Signal&quot;, welches Du im Sinn hast? Hast'e ggf. ein paar Codezeilen zur Veranschaulichung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269389</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 15:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 17:05:46 GMT]]></title><description><![CDATA[<p>Naja halt das CEvent,<br />
ist so ähnlich wie ne globale Variable, ja, aber threadsafe</p>
<p>Theoretisch kannst auf die einfache Art erstmal deine globalen Variablen vom Typ bool(oder was auch immer) durch CEvent ersetzen.</p>
<p>Mit SetEvent() wird dann auf signaled geschalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269450</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 19 Apr 2007 17:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 18:22:12 GMT]]></title><description><![CDATA[<p>Hallo Pellaeon,</p>
<p>das CEvent scheine ich brauchen zu können. Leider bin ich nicht gerade der Großmeister was Objekte angeht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>muß ich jetzt eine &lt;variable&gt; anlegen und dann variable.CEvent(...) schreiben oder wie geht das jetzt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269494</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 18:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 18:47:52 GMT]]></title><description><![CDATA[<p>öhm nein, CEvent ist die Klasse, davon brauchst du eine Instanz</p>
<p>also z.B. einfach</p>
<pre><code class="language-cpp">CEvent event;
</code></pre>
<p>warten auf das Event tust du mit</p>
<pre><code class="language-cpp">::WaitForSingleObject(event.m_hObject,INFINITE);
</code></pre>
<p>Wobei der zweite Parameter davon abhängt, was du genau willst(näheres siehe MSDN)<br />
Das wäre das, was bei dir am ENde des ersten Teils von Thread 1 steht.</p>
<p>Thread 2 aktiviert das Event dann mit</p>
<pre><code class="language-cpp">event.SetEvent();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1269526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269526</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 19 Apr 2007 18:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 18:53:44 GMT]]></title><description><![CDATA[<p><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="😮"
    /> ok: event.SetEvent() macht Thread 2 am Schluß, wenn er fertig ist!? Wird das Event denn auch wieder zurückgesetzt, wenn nachdem es abgefragt wurde? Es sollte halt beim nächsten Mal auch noch funktionieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269536</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 18:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 18:57:28 GMT]]></title><description><![CDATA[<p>Gibt es eigentlich auch die Möglichkeit, das Event nur abzufragen und nicht zu warten (und ohne ggf. das Event vorzeitig zu reseten)? Ich möchte damit gerne eine auch noch eine if-Abfrage durchführen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269540</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 18:57:28 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 19:00:48 GMT]]></title><description><![CDATA[<p>autodidakt schrieb:</p>
<blockquote>
<p>Gibt es eigentlich auch die Möglichkeit, das Event nur abzufragen und nicht zu warten (und ohne ggf. das Event vorzeitig zu reseten)? Ich möchte damit gerne eine auch noch eine if-Abfrage durchführen...</p>
</blockquote>
<p>du kannst wählen zwischen 'manual-' und 'autoreset' events.<br />
nur abfragen ohne zu warten geht mit 'WaitForSingleObject (..., <strong>0</strong>)'<br />
<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/1269544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269544</guid><dc:creator><![CDATA[vista]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 19:12:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">event.ResetEvent();
</code></pre>
<p>Zum Thema &quot;abfragen&quot; hat ja vista schon geantwortet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269566</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:12:33 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 19:19:52 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Zum Thema &quot;abfragen&quot; hat ja vista schon geantwortet</p>
</blockquote>
<p>Vista? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269573</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Thu, 19 Apr 2007 23:31:00 GMT]]></title><description><![CDATA[<p>Wenn es ein auto-reset Event ist gibt es keine mir bekannte Möglichkeit den Zustand abzufragen ohne den Event zu resetten.</p>
<p>Wenn es ein manual-reset Event ist eben &quot;WaitForSingleObject(h, 0)&quot;.</p>
<p>Im Allgemeinen sollten sich Anfänger auch eher an die lieben manual-reset Events halten, mit denen macht man in der Regel weniger Fehler.</p>
<p>Und auf keinen Fall PulseEvent verwenden, die Funktion ist pöse (steht eh in der MSDN, mit Begründung und allem).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269670</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 19 Apr 2007 23:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Fri, 20 Apr 2007 06:54:53 GMT]]></title><description><![CDATA[<p>Also das lässt sich doch noch vereinfachen <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>Pellaeon schrieb:</p>
<blockquote>
<p>warten auf das Event tust du mit</p>
<pre><code class="language-cpp">::WaitForSingleObject(event.m_hObject,INFINITE);
</code></pre>
</blockquote>
<p>Erstens: CEvent kann implizit in ein Handle umgewandelt werden, also brauchst du das &quot;.m_hObject&quot; in dem Aufruf nicht.</p>
<p>Zweitens: Du kannst auch auf Threads warten - und wenn du nur wissen willst, ob der Thread beendet ist, reicht das völlig aus:</p>
<pre><code class="language-cpp">HANDLE thread2 = CreateThread(/*Thread 2*/);
...
WaitForSingleObject(thread2,INFINITE);//Wartet auf das Ende von Thread 2
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1269739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269739</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Apr 2007 06:54:53 GMT</pubDate></item><item><title><![CDATA[Reply to Threads synchronisieren on Fri, 20 Apr 2007 07:25:23 GMT]]></title><description><![CDATA[<p>so langsam fang' ich an durchzublicken... <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>Vielen Dank für weiteren die Hinweise! Alles sehr nützlich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269757</guid><dc:creator><![CDATA[autodidakt]]></dc:creator><pubDate>Fri, 20 Apr 2007 07:25:23 GMT</pubDate></item></channel></rss>