<?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 - gibt es einen Hauptthread?]]></title><description><![CDATA[<p>Ich arbeite zur Zeit mit den boost::threads. In meiner main erstelle ich 5 Module die alle ähnlich aufgebaut sind. Alle 5 Module laufen in einem eigenen Thread. Zum Starten binde ich die Methode arbeiten() eines Moduls an einen neuen Thread.</p>
<pre><code>boost::thread Faden = boost::thread(boost::bind(&amp;Modul::arbeiten, this));
</code></pre>
<p>Nun frage ich mich, was ich der main machen soll!? Dieser &quot;Hauptthread&quot; gerät zu return 0 und das Programm ist zack aus. Ich würde diesen Thread gerne vernichten, ohne dass das Programm beendet wird.</p>
<p>Die 5 Module sollen dezentral gesteuert sein und sich selbst verwalten. Möchte eines der Module das Programm beenden, so beendet er alle anderen Module und dann sich selbst. Das wird dann mittels join() gemacht? Aber wie beendet sich das Modul selber? Einfach auslaufen lassen?</p>
<p>Oder müssen die Threads wieder von dem Thread beendet werden, der sie erstellt hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277313/threads-gibt-es-einen-hauptthread</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 21:37:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277313.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Nov 2010 18:43:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Tue, 16 Nov 2010 18:45:20 GMT]]></title><description><![CDATA[<p>Ich arbeite zur Zeit mit den boost::threads. In meiner main erstelle ich 5 Module die alle ähnlich aufgebaut sind. Alle 5 Module laufen in einem eigenen Thread. Zum Starten binde ich die Methode arbeiten() eines Moduls an einen neuen Thread.</p>
<pre><code>boost::thread Faden = boost::thread(boost::bind(&amp;Modul::arbeiten, this));
</code></pre>
<p>Nun frage ich mich, was ich der main machen soll!? Dieser &quot;Hauptthread&quot; gerät zu return 0 und das Programm ist zack aus. Ich würde diesen Thread gerne vernichten, ohne dass das Programm beendet wird.</p>
<p>Die 5 Module sollen dezentral gesteuert sein und sich selbst verwalten. Möchte eines der Module das Programm beenden, so beendet er alle anderen Module und dann sich selbst. Das wird dann mittels join() gemacht? Aber wie beendet sich das Modul selber? Einfach auslaufen lassen?</p>
<p>Oder müssen die Threads wieder von dem Thread beendet werden, der sie erstellt hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981356</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Tue, 16 Nov 2010 18:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Tue, 16 Nov 2010 19:02:01 GMT]]></title><description><![CDATA[<p>Lass den Hauptthread doch auch arbeiten, dann musst du den nicht beenden.</p>
<p>Beenden eines Threas geht normalerweise so, dass er einfach fertig ist, respektive die Funktion, die aufgerufen wurde beendet wird.</p>
<p>Das mit dem beenden kannst du ja so machen, dass du irgendwo eine Variable verwaltest, die den anderen Threads mitteilt, dass ein Modul beenden will. Die anderen können sich dann selbst auch auslaufen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981365</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 16 Nov 2010 19:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Tue, 16 Nov 2010 19:14:15 GMT]]></title><description><![CDATA[<p>Ne kleine Zwischenfrage: Was passiert eigentlich, wenn der Main Thread einen Thread startet und sich dann beendet?</p>
<p>Also sowas hier:</p>
<pre><code class="language-cpp">int main() {  // Main Thread

   Thread* t = new Thread(methode);
   t-&gt;start();

   return 0;
} // Main Thread ende
</code></pre>
<p>Läuft dann der gestartete Thread weiter oder wird der vom BS gekillt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981369</guid><dc:creator><![CDATA[Zwischenfrage]]></dc:creator><pubDate>Tue, 16 Nov 2010 19:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Tue, 16 Nov 2010 19:46:22 GMT]]></title><description><![CDATA[<p>Threads hängen am Hauptprozess. Wird dieser beendet, sterben auch alle Threads. Bei echten Unterprozessen kann dies jedoch eventuell anders sein (das liegt hier aber nicht vor).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981392</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 16 Nov 2010 19:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Tue, 16 Nov 2010 20:12:25 GMT]]></title><description><![CDATA[<p>Ja ich kann den &quot;Hauptthread&quot; auch arbeiten lassen. Dazu rufe ich an einem einzigen Modul die arbeiten() eben nicht in einem eigenen Thread auf, sondern verwende den &quot;Hauptthread&quot;</p>
<p>BLOß: Wenn dieses Modul dann durch ein anderes beendet wird, dann terminiert meine gesamte Anwendung??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981403</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Tue, 16 Nov 2010 20:52:13 GMT]]></title><description><![CDATA[<p>Such dir bei <a href="http://www.boost.org/doc/html/thread/synchronization.html" rel="nofollow">http://www.boost.org/doc/html/thread/synchronization.html</a> eine passende Klasse raus, zum Beispiel <a href="http://www.boost.org/doc/html/thread/synchronization.html#thread.synchronization.barriers" rel="nofollow">Barrier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981437</guid><dc:creator><![CDATA[barren]]></dc:creator><pubDate>Tue, 16 Nov 2010 20:52:13 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 12:30:38 GMT]]></title><description><![CDATA[<p>Ich habe immer noch keine Lösung gefunden!</p>
<p>Entweder ich lasse den Thread arbeiten, beende ihn oder lass ihn warten:</p>
<blockquote>
<p>Threads hängen am Hauptprozess. Wird dieser beendet, sterben auch alle Threads. Bei echten Unterprozessen kann dies jedoch eventuell anders sein (das liegt hier aber nicht vor).</p>
</blockquote>
<p>Das heißt wenn ich ihn arbeiten lasse und er beendet wird, wird meine gesamte Anwendung beendet??</p>
<p>Ich will ihn nicht warten lassen, weil ich dann einen weiteren Thread habe und einen weiteren Threadwechsel. Eine Barrier geht auch nicht da sich ständig Threads starte und beenden können und ich nie weiß wieviele es sind. Dann müsste ich ihn das ständig überprüfen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981675</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Wed, 17 Nov 2010 12:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 12:51:40 GMT]]></title><description><![CDATA[<p>Wahrscheinlich willst du keine Threads sondern separate Prozesse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981691</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 17 Nov 2010 12:51:40 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 13:05:54 GMT]]></title><description><![CDATA[<p>fabske schrieb:</p>
<blockquote>
<p>Ich will ihn nicht warten lassen, weil ich dann einen weiteren Thread habe und einen weiteren Threadwechsel.</p>
</blockquote>
<p>Der Satz kommt mir komisch vor. Klar hast du einen Threadwechsel - aber eben nur einmal. Viel teurer ist hier das Spawnen der ganzen Threads - das kostet viel mehr Zeit als dieser einmalige Wechsel.</p>
<p>Du solltest erklären was du genau machen willst. Denn in den meisten Fällen ist die Antwort: der Hauptthread wartet auf seine Kinder die gesuchte Lösung. uU willst du eigene Prozesse (was aber viel teurer in der Herstellung ist) oder aber du willst gar keine Threads und garkeine Prozesse...</p>
<p>Deshalb musst du uns erklären was du genau machen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981699</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 17 Nov 2010 13:05:54 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 13:26:26 GMT]]></title><description><![CDATA[<p>Was ist Spawnen?</p>
<p>Ich programmiere ein Framework für eine regelungstechnische Anwendung. Das heißt ich habe X Module (5-10) die in eigenen Threads laufen und das zyklisch! Also z.B. mit 40 Hertz immer im Kreis (while-Schleife bis sie abgebrochen werden).</p>
<p>Ich müsste den Hauptthread nun 40 mal pro Sekunde prüfen lassen, wie viele Threads es gerade gibt im Falle dass die Anwendung beendet werden soll, um dann eine Barrier einzurichten die auf alle Threads wartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981711</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Wed, 17 Nov 2010 13:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 13:55:01 GMT]]></title><description><![CDATA[<p>Du kannst ganz einfach, nachdem Du alle Kindthreads erzeugt hast, mit allen Kindthreads joinen. Damit ist der Hauptthread erst dann fertig, wenn sich alle Kinder beendet haben. Überdies wird nie wieder in den Hauptthread gewechselt, weil die Bedingung dafür, dass der weiterläuft, nicht erfüllt ist. So schlau ist der Scheduler schon, nicht in einen Thread zu wechseln, der wartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981719</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 17 Nov 2010 13:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 14:24:27 GMT]]></title><description><![CDATA[<p>oder wenn du von mikrocontrollern redest, dann lass den hauptthread schlafen und auf einen interrupt warten. so dass du nur jedesmal wenn ein worker thread beendet wird (was den interrupt auslöst) überprüfen musst wieviele worker noch laufen.</p>
<p>um was für eine hardware handelt es sich denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981736</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 17 Nov 2010 14:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Wed, 17 Nov 2010 23:56:02 GMT]]></title><description><![CDATA[<p>Alles sehr interessante Vorschläge, ich denke ich werde mir einen aussuchen! <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 />
Es geht um ganz normale X86 Hardware.</p>
<p>Ich habe 3 ganz wichtige Fragen:</p>
<p>1. Was ist spawnen?<br />
2. Wie kann sich ein Thread selbst beenden? Er kann sich doch nicht joinen?<br />
3. Was passiert, wenn ein Thread einen Thread erstellt, und der erstellende Thread beendet wird? Wird dann auch der Kindthread beendet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982031</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Wed, 17 Nov 2010 23:56:02 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Thu, 18 Nov 2010 00:06:54 GMT]]></title><description><![CDATA[<p>fabske schrieb:</p>
<blockquote>
<p>1. Was ist spawnen?</p>
</blockquote>
<p>Das Erzeugen neuer Threads. Noch nie nen Ego-Shooter gespielt, bei dem du nach dem Sterben wieder spawnst? <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>
<blockquote>
<p>2. Wie kann sich ein Thread selbst beenden? Er kann sich doch nicht joinen?</p>
</blockquote>
<p>Du gibst dem Thread beim Erzeugen ne Funktion mit, die er abarbeiten soll. Wenn er mit dieser Funktion fertig ist, stirbt der Thread.</p>
<blockquote>
<p>3. Was passiert, wenn ein Thread einen Thread erstellt, und der erstellende Thread beendet wird? Wird dann auch der Kindthread beendet?</p>
</blockquote>
<p>Das ist ein schönes Beispiel, was man selbst testen kann: Gib alle x Sekunden einen thread-spezifischen String aus und beobachte das Ergebnis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982033</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Thu, 18 Nov 2010 00:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Thu, 18 Nov 2010 09:13:44 GMT]]></title><description><![CDATA[<p>fabske schrieb:</p>
<blockquote>
<p>Alles sehr interessante Vorschläge, ich denke ich werde mir einen aussuchen! <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 />
Es geht um ganz normale X86 Hardware.</p>
</blockquote>
<p>Dann mach es mit einer Barrier. So schläft der Hauptthread und wird garnicht erst aufgeweckt bevor nicht alle Kinder fertig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982097</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 18 Nov 2010 09:13:44 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Sat, 20 Nov 2010 12:25:19 GMT]]></title><description><![CDATA[<p>fabske schrieb:</p>
<blockquote>
<p>Dann mach es mit einer Barrier. So schläft der Hauptthread und wird garnicht erst aufgeweckt bevor nicht alle Kinder fertig sind.</p>
</blockquote>
<p>Und so hab ich es auch gemacht. Eine barrier die auf zwei Threads wartet. Der &quot;Haupt-Thread&quot; ruft wiat() auf und wartet. Der Thread der die Anwendung beendet, beendet alle anderen Threads mittels join() und ruft danach wait an der barrier auf. Der die main wartet ein bisschen (sleep) dass der beendende Thread &quot;auslaufen&quot; kann und ruft dann exit auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1983198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1983198</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Sat, 20 Nov 2010 12:25:19 GMT</pubDate></item><item><title><![CDATA[Reply to Threads - gibt es einen Hauptthread? on Sat, 20 Nov 2010 13:01:49 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>fabske schrieb:</p>
<blockquote>
<p>1. Was ist spawnen?</p>
</blockquote>
<p>Das Erzeugen neuer Threads. Noch nie nen Ego-Shooter gespielt, bei dem du nach dem Sterben wieder spawnst? <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>
</blockquote>
<p><a href="http://bst.bumchak.de/wp-content/uploads/2010/09/jesus-lag.jpg" rel="nofollow">http://bst.bumchak.de/wp-content/uploads/2010/09/jesus-lag.jpg</a> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1983208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1983208</guid><dc:creator><![CDATA[spawner]]></dc:creator><pubDate>Sat, 20 Nov 2010 13:01:49 GMT</pubDate></item></channel></rss>