<?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[Main auf mehrere Threads warten]]></title><description><![CDATA[<p>Hi, Leute ich habe ein kleines Problem:<br />
Ich möchte, dass mehrere Dateien gleichzeitig geladen werden, die main() aber darauf wartet! Wie löse ich das? Rufe ich<br />
Thread1.join();<br />
Thread2.join();<br />
auf, dann wartet zwar die main(), bis beide fertig sind, diese sind aber nichtmehr parallel und das möchte ich ja nicht :D.<br />
Ich möchte, dass die main() wartet aber die Threads parallel laufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319814/main-auf-mehrere-threads-warten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 20:59:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319814.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Sep 2013 11:12:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 11:12:07 GMT]]></title><description><![CDATA[<p>Hi, Leute ich habe ein kleines Problem:<br />
Ich möchte, dass mehrere Dateien gleichzeitig geladen werden, die main() aber darauf wartet! Wie löse ich das? Rufe ich<br />
Thread1.join();<br />
Thread2.join();<br />
auf, dann wartet zwar die main(), bis beide fertig sind, diese sind aber nichtmehr parallel und das möchte ich ja nicht :D.<br />
Ich möchte, dass die main() wartet aber die Threads parallel laufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350213</guid><dc:creator><![CDATA[Obsidian]]></dc:creator><pubDate>Wed, 04 Sep 2013 11:12:07 GMT</pubDate></item><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 11:15:33 GMT]]></title><description><![CDATA[<p>Doch, ist schon noch paralell: join() bewirkt nur dass gewartet wird bis der Thread fertig ist, laufen tut er jedoch vorher schon.</p>
<p>Das einzige was du damit nicht kannst ist kucken wer zu erst fertig wird, sprich wenn du beide joinst geht es auch erst weiter wenn beide fertig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350216</guid><dc:creator><![CDATA[blubquam]]></dc:creator><pubDate>Wed, 04 Sep 2013 11:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 11:18:17 GMT]]></title><description><![CDATA[<pre><code>void loadFile(string const&amp; filename)
{
    // file laden
}

int main()
{
    std::thread t1([](){ loadFile(&quot;a.txt&quot;); });
    std::thread t2([](){ loadFile(&quot;b.txt&quot;); });
    // files werden nun parallel gelesen
    t1.join();
    t2.join();
    // nun wird auf beide Threads gewartet, und beide Files sind geladen

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2350217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350217</guid><dc:creator><![CDATA[ptr^^]]></dc:creator><pubDate>Wed, 04 Sep 2013 11:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 11:39:13 GMT]]></title><description><![CDATA[<p>Wenn das Laden nicht eine aufwändige Bearbeitung der Daten beinhaltet, wird das Lesen mit Threads eher langsamer ablaufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350225</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 04 Sep 2013 11:39:13 GMT</pubDate></item><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 11:50:54 GMT]]></title><description><![CDATA[<p>Da bietet sich auch eigentlich std::async an.</p>
<pre><code class="language-cpp">:::

vector&lt;char&gt; load_file(string const&amp; filename);

int main()
{
  future&lt;vector&lt;char&gt;&gt; f1 = async(load_file,&quot;dies.txt&quot;);
  future&lt;vector&lt;char&gt;&gt; f2 = async(load_file,&quot;das.txt&quot;);
  vector&lt;char&gt; v3 = load_file(&quot;blah.txt&quot;);
  vector&lt;char&gt; v1 = f1.get(); // blokiert ggf. bis die Antwort da ist
  vector&lt;char&gt; v2 = f2.get(); // blokiert ggf. bis die Antwort da ist
  // fertig, alles gelesen
}
</code></pre>
<p>Ggf ist es bei mehreren Dateien sinnvoller, nicht alle gleichzeitig zu lesen sondern immer nur maximal 3 oder sowas ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350228</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 04 Sep 2013 11:50:54 GMT</pubDate></item><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 13:40:37 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Wenn das Laden nicht eine aufwändige Bearbeitung der Daten beinhaltet, wird das Lesen mit Threads eher langsamer ablaufen.</p>
</blockquote>
<p>Mal davon abgesehen, ist die Platte ohnehin das Langsamste am Vorgang.</p>
<p>Threads beim Laden lohnen sich dann, wenn große Datenmengen verarbeitet werden, oder andere Aufgaben gleichzeitig ablaufen müssen, wie z.B ein Ladebildschirm angezeigen, Berechnungen im Hintergrund, etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350264</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Wed, 04 Sep 2013 13:40:37 GMT</pubDate></item><item><title><![CDATA[Reply to Main auf mehrere Threads warten on Wed, 04 Sep 2013 14:08:53 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Wenn das Laden nicht eine aufwändige Bearbeitung der Daten beinhaltet, wird das Lesen mit Threads eher langsamer ablaufen.</p>
</blockquote>
<p>Kommt drauf an. Vielleicht hat das OS die Dateien schon in den RAM geladen, dann geht das Lesen sehr schnell.<br />
Deshalb ist beim Compilieren oft nicht die Platte das Bottleneck, sondern die CPU.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350276</guid><dc:creator><![CDATA[htasd]]></dc:creator><pubDate>Wed, 04 Sep 2013 14:08:53 GMT</pubDate></item></channel></rss>