<?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[Multithreading - Aufbau(?)]]></title><description><![CDATA[<p>Hi,</p>
<p>ich brauche Multithreading für ein in Kürze anstehendes Projekt und habe mich daher ein bisschen darin eingelesen.</p>
<p>Im Grunde muss das Programm vier Aufgaben bewältigen:</p>
<p>Daten einlesen, verarbeiten, Daten ausgeben und dem Benutzer eine Oberfläche bieten.<br />
Ich dachte mir nun, dass es wohl das beste wäre das ganze in vier Threads aufzuteilen.</p>
<p>Aber mit welchem fange ich an?<br />
Soll der Benutzeroberflächen-Thread alle anderen (drei) starten?<br />
Oder sollte ich einen fünften Thread erstellen, der nur dazu dient die anderen (vier) zu verwalten?</p>
<p>Wie muss man sowas aufbauen?</p>
<p>LG<br />
Sinthoras</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188865/multithreading-aufbau</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 09:48:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188865.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Aug 2007 17:45:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Sun, 05 Aug 2007 17:45:45 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich brauche Multithreading für ein in Kürze anstehendes Projekt und habe mich daher ein bisschen darin eingelesen.</p>
<p>Im Grunde muss das Programm vier Aufgaben bewältigen:</p>
<p>Daten einlesen, verarbeiten, Daten ausgeben und dem Benutzer eine Oberfläche bieten.<br />
Ich dachte mir nun, dass es wohl das beste wäre das ganze in vier Threads aufzuteilen.</p>
<p>Aber mit welchem fange ich an?<br />
Soll der Benutzeroberflächen-Thread alle anderen (drei) starten?<br />
Oder sollte ich einen fünften Thread erstellen, der nur dazu dient die anderen (vier) zu verwalten?</p>
<p>Wie muss man sowas aufbauen?</p>
<p>LG<br />
Sinthoras</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339112</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Sun, 05 Aug 2007 17:45:45 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Sun, 05 Aug 2007 17:57:38 GMT]]></title><description><![CDATA[<p>Ich denke da reichen 2.<br />
Einen der die Oberfläche verwaltet<br />
und einen der die Daten verarbeitet.<br />
(und bevor er sie Verarbeitet muss er sie ja einlesen,<br />
es macht also keinen Sinn das in 2 Threads aufzuteilen,<br />
wenn er fertig ist gibt er das Ganze dann aus)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339119</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Sun, 05 Aug 2007 17:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Sun, 05 Aug 2007 18:09:45 GMT]]></title><description><![CDATA[<p>Danke für deine schnelle Antwort.</p>
<p>Hm, nach Möglichkeit sollte das alles so ziemlich in Echtzeit ablaufen (Einlesen, Verarbeiten, Ausgeben) und ich dachte, man könnte es auf die Art etwas beschleunigen?!?</p>
<p>Das &quot;Einlesen&quot; geschieht in diesem Fall nämlich nicht einfach aus einer Textdatei o.ä., sondern von einer Kamera. Außerdem müssen die Bilder vor der Verarbeitung noch zerschnitten werden.<br />
Es kommen dabei immer neue Bilder an, die möglichst schnell zerschnitten und verarbeitet werden müssen.</p>
<p>Die Ausgabe könnte man wohl wirklich direkt in die Verarbeitung einbauen, aber ich dachte, bei der ganze Arbeit, die mit dem Einlesen verbunden ist, dem einen eigenen Thread zu gönnen, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339125</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Sun, 05 Aug 2007 18:09:45 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Sun, 05 Aug 2007 21:35:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14250">@Sinthoras</a>:</p>
<p>Zur Frage &quot;5. Thread ja/nein&quot;: nein. Lass den UI Thread die anderen Starten. Soll dein Programm auch &quot;command line&quot; Fähig sein bzw. mal als Service laufen, kann der UI Thread immer noch alle anderen rausstarten, und dann einfach nixmehr tun ausser auf eventuelle service-control-messages zu reagieren.</p>
<p>Zum Rest: ich denke es macht dann Sinn es in mehrere Threads aufzuteilen wenn das Einlesen synchron passiert. Am einfachsten wird es wohl sein wenn du eine Art Filterkette bastelst, wobei Einlesen, Zerschneiden, Verarbeiten und Output die Filter sind. Dann kannst du jeden Filter intern so implementieren wie du möchtest, also mit eigenem Thread oder ohne.</p>
<p>Ein weiterer Grund mehrere Threads zu verwenden wäre wenn es mehrere Verarbeitungsschritte gibt die parallel erfolgen können und merklich Rechenzeit benötigen (da aktuelle CPUs 2-4 Cores haben können diese Verarbeitungsschritte dann auch wirklich parallel laufen). Also z.B. wenn das &quot;Zerschneiden&quot; ein aufwändiger Vorgang ist zahlt es sich aus, wenn das in ein paar Mikrosekunden/Bild erlidigt ist zahlt sich dafür kein eigener Thread aus.</p>
<p>Für die Implementierung mit einem eigenen Thread bietet sich eine bounded FIFO Queue an, da kannst du die Daten von einem Thread aus reinstecken, und von einem anderen aus auslesen. &quot;bounded&quot; heisst dabei dass du eine Obergrenze festlegst wie viel Daten maximal gepuffert sein können (z.B. nur max. 1 Bild oder auch max. 3 Bilder).</p>
<p>Allerdings solltest du dir die Frage stellen was wichtiger ist: hoher Throughput (viele Bilder pro Sekunde) oder niedrige Latenz (geringe Zeit vom Einlesen des Bildes bis zur fertig verarbeiteten Ausgabe).<br />
Für hohen Throughput eignet sich die Lösung mit mehreren Threads gut, dafür hast du u.U. mehr Latenz als mit nur einem Thread.<br />
Für geringe Latenz bringt es dagegen nix, da wäre eher eine Lösung mit nur einem einzigen Thread angebracht, dafür musst du u.U. mehr Frames droppen als mit mehreren Threads.</p>
<p>Nochwas: wenn das ganze auf einer Single-Core CPU laufen soll sind natürlich nur Stellen interessant wo du auf irgendetwas warten musst was nicht &quot;Datenverarbeitung mit der CPU&quot; ist, also z.B. auf das nächste Bild von der Kamera oder auf das Schreiben in ein File. Diese Teile sollte man vom Rest &quot;entkoppeln&quot;, also in einen eigenen Thread steckten oder über asynchrone APIs erledigen. Alles andere kann dann sequentiell in einem Thread laufen, mehrere Thread die bloss &quot;rechnen&quot; bringen da nix, weil nix parallelisiert werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339241</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 05 Aug 2007 21:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Mon, 06 Aug 2007 03:02:47 GMT]]></title><description><![CDATA[<blockquote>
<p>Im Grunde muss das Programm vier Aufgaben bewältigen:</p>
<p>Daten einlesen, verarbeiten, Daten ausgeben und dem Benutzer eine Oberfläche bieten.</p>
</blockquote>
<p>ROFL, welches Programm macht den irgendwas anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339308</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Mon, 06 Aug 2007 03:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Mon, 06 Aug 2007 09:19:19 GMT]]></title><description><![CDATA[<p>DEvent schrieb:</p>
<blockquote>
<blockquote>
<p>Im Grunde muss das Programm vier Aufgaben bewältigen:</p>
<p>Daten einlesen, verarbeiten, Daten ausgeben und dem Benutzer eine Oberfläche bieten.</p>
</blockquote>
<p>ROFL, welches Programm macht den irgendwas anderes?</p>
</blockquote>
<p>Lies die Beiträge zu Ende.<br />
Es ist noch genau genug erläutert.</p>
<p>Ich gebe zu, dass das zu Anfang unglücklich formuliert war, aber wenn du einfach mal weiter gelesen hättest, wäre uns sowas erspart geblieben.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14250">@Sinthoras</a>:</p>
<p>Zur Frage &quot;5. Thread ja/nein&quot;: nein. Lass den UI Thread die anderen Starten. Soll dein Programm auch &quot;command line&quot; Fähig sein bzw. mal als Service laufen, kann der UI Thread immer noch alle anderen rausstarten, und dann einfach nixmehr tun ausser auf eventuelle service-control-messages zu reagieren.</p>
</blockquote>
<p>Danke, dann lass ich das.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14250">@Sinthoras</a>:<br />
Zum Rest: ich denke es macht dann Sinn es in mehrere Threads aufzuteilen wenn das Einlesen synchron passiert.</p>
</blockquote>
<p>Ja, das soll es.</p>
<p>Wie aufwendendig das Zerschneiden sein wird, weiß ich noch nicht genau, jedenfalls wird der Einlesethread ja auf die Kamera warten müssen und währenddessen kann der Rest ja weiterarbeiten.</p>
<p>Das fertige Programm wird auf einem Dualcore laufen, also lohnt sich das Aufteilen der &quot;Datenverarbeitung mit der CPU&quot; wohl schon. Danke.</p>
<blockquote>
<p>Für die Implementierung mit einem eigenen Thread bietet sich eine bounded FIFO Queue an, da kannst du die Daten von einem Thread aus reinstecken, und von einem anderen aus auslesen. &quot;bounded&quot; heisst dabei dass du eine Obergrenze festlegst wie viel Daten maximal gepuffert sein können (z.B. nur max. 1 Bild oder auch max. 3 Bilder).</p>
</blockquote>
<p>Vielen Dank, das ist eine wirklich gute Idee!<br />
Bis auf die Ausgabe lässt sich das wohl so machen (die nämlich arbeitet nicht mehr mit den Bildern).</p>
<p>Zum letzten Abschnitt: Eine geringe Latenz ist leider auch nicht ganz unwichtig.<br />
Kann ich es irgendwie so lösen, dass im Notfall der Bildverarbeitung mehr Rechenzeit zugeteilt wird, als dem Einlesen?</p>
<p>Das wäre doch bei mehreren Threads (wenn ich es richtig verstehe) das Problem, dass z.B. der Einlese-Thread der Verarbeitung Rechenzeit klaut, weshalb das einzelne Bild dann länger in der Verarbeitungskette rumdümpelt, oder nicht?</p>
<p>Ideal wäre es ja wohl, wenn ein Kern die ganze Zeit nichts anderes machen würde, als Rechen (die Verarbeitung erledigen), während der andere sich um den &quot;Rest&quot; kümmert... keine Ahnung, ob sowas möglich ist...</p>
<p>Soweit jedenfalls schonmal vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339414</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Mon, 06 Aug 2007 09:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Mon, 06 Aug 2007 10:29:57 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p>DEvent schrieb:</p>
<blockquote>
<blockquote>
<p>Im Grunde muss das Programm vier Aufgaben bewältigen:</p>
<p>Daten einlesen, verarbeiten, Daten ausgeben und dem Benutzer eine Oberfläche bieten.</p>
</blockquote>
<p>ROFL, welches Programm macht den irgendwas anderes?</p>
</blockquote>
<p>Lies die Beiträge zu Ende.<br />
Es ist noch genau genug erläutert.</p>
<p>Ich gebe zu, dass das zu Anfang unglücklich formuliert war, aber wenn du einfach mal weiter gelesen hättest, wäre uns sowas erspart geblieben.</p>
</blockquote>
<p>Wieso hast du das nicht gleich gemacht? So wars total nichtssagend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339441</guid><dc:creator><![CDATA[fghfg]]></dc:creator><pubDate>Mon, 06 Aug 2007 10:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Mon, 06 Aug 2007 11:24:25 GMT]]></title><description><![CDATA[<p>Ich habe meinen Fehler doch eingestanden - reicht das denn nicht?</p>
<p>Können wir jetzt bitte zum eigentlichen Thema zurückkommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339475</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Mon, 06 Aug 2007 11:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Mon, 06 Aug 2007 16:10:53 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p>Ich habe meinen Fehler doch eingestanden - reicht das denn nicht?</p>
<p>Können wir jetzt bitte zum eigentlichen Thema zurückkommen?</p>
</blockquote>
<p>Sorry, ich fand das nur unglaublich Witzig, weil das ja im ersten post stand. <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="🕶"
    /> Sollte auch nicht abwertend sein, war einfach nur witzig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339695</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Mon, 06 Aug 2007 16:10:53 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Mon, 06 Aug 2007 23:20:28 GMT]]></title><description><![CDATA[<p>Ja, ist ja ok, ich bin dir ja auch nicht böse.<br />
War ja mein Fehler und in der Tat nicht sehr... zielführend <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>Ich wollte nur jetzt gerne zum Thema zurückkommen und nicht weiter über den einen Satz diskutieren, das wollte ich damit bezwecken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339860</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Mon, 06 Aug 2007 23:20:28 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Tue, 07 Aug 2007 01:57:37 GMT]]></title><description><![CDATA[<blockquote>
<p>Zum letzten Abschnitt: Eine geringe Latenz ist leider auch nicht ganz unwichtig.<br />
Kann ich es irgendwie so lösen, dass im Notfall der Bildverarbeitung mehr Rechenzeit zugeteilt wird, als dem Einlesen?</p>
</blockquote>
<p>Ja, das passiert &quot;automatisch&quot; wenn du eine bounded Queue verwendest - zumindest wenn der &quot;Insert&quot; Aufruf blockiert (siehe weiter unten). Wenn &quot;das Einlesen&quot; schon &quot;weiter vorne&quot; ist als &quot;die Bildverarbeitung&quot;, dann wird die Queue zwischen &quot;Einlesen&quot; und &quot;Bildverarbeitung&quot; automatisch &quot;voll&quot;. Wie &quot;voll&quot; eben &quot;voll&quot; ist kannst du ja selbst definieren (max. 1 Bild, max. 2 Bilder etc.).</p>
<p>Wenn das passiert, also die Queue &quot;voll&quot; wird kann man 3 Dinge tun:</p>
<ol>
<li>
<p>die Queue blockiert den &quot;Insert&quot; Aufruf - der Einlese-Thread muss also so lange warten bis der Bildverarbeitungs-Thread das Bild komplett verarbeitet hat an dem er gerade arbeitet. Dadurch sparst du Rechenzeit beim Einlesen, da der blockierte Thread kaum Rechenzeit braucht.</p>
</li>
<li>
<p>die Queue lässt den &quot;Insert&quot; Aufruf einfach fehlschlagen, und das neu einzufügende Bild wird verworfen. Der Einlese-Thread kann sofort weitermachen und ein neues Bild holen. Dadurch wird zwar ein Bild verworfen (&quot;dropped frame&quot;), allerdings ist das nächste Bild welches in die Queue eingefügt wird (wenn sie irgendwann mal &quot;nicht-voll&quot; wird) &quot;akuteller&quot; - es sinkt also die Latenzzeit.</p>
</li>
<li>
<p>die &quot;Queue&quot; verwirft das zuletzt eingefügte Bild, und ersetzt es durch das neue. Der Einlese-Thread kann auch sofort weitermachen. Weiterer Vorteil: das nächste Bild welches verarbeitet wird ist nicht das (ältere) Bild das zuvor in der Queue gepuffert war, sondern das &quot;neuere&quot; Bild (das ältere wurde ja &quot;überschrieben&quot;). Die Latenzeit sinkt dadurch nochmals.</p>
</li>
</ol>
<p>Eine maximale Queue-Länge von 1 mit Möglichkeit 3 von oben kombiniert sollte die geringst-mögliche Latenz bringen, ausgenommen eben der &quot;mach alles in einem Thread&quot; Variante, die aber u.U. zu wesentlich mehr dropped Frames führen könnte (da sie nur einen Core verwendet und nichts parallelisieren kann).</p>
<p>Wenn die &quot;Bearbeitungszeiten&quot; für ein Bild nicht sehr stark schwanken sollte eine maximale Queue-Länge von 1 auch ausreichend sein um maximalen Throughput (geringste &quot;dropped frames&quot; Rate) zu bekommen. Schwanken die &quot;Bearbeitungszeiten&quot; sehr stark könnte es etwas bringen eine längere Queue zu verwenden, allerdings geht das dann auf Kosten der maximalen Latenz.</p>
<p>Eine Aufteilung auf verschiedene Threads zwischen verschiedenen Teilen der &quot;Bearbeitung&quot; (also eben z.B. &quot;Zerschneiden&quot; und &quot;Weiterverarbeiten&quot;) ist IMO sinnvoll, wenn diese Schritte &quot;aufwändig genug&quot; sind, und eben mehr als 1 Core zur Verfügung steht.<br />
Die Queues zwischen den einzelnen Verarbeitungsschritten sollte IMO immer blockierend sein (also Möglichkeit 1 von oben), da man sonst in der ganzen Kette vor der Queue sinnlos Rechenzeit verblasen lässt. Im Prinzip trifft das auf das Einlesen eines Bildes auch zu, bloss gehe ich davon aus dass das Einlesen nicht wirklich sehr viel CPU Leistung verbrauchen wird. Normalerweise sollte das über die Grafikkarte/Capturekarte und DMA/Bus-Master passieren, plus eventuell noch einem dummen Mem-Copy. Nichst was man &quot;sich nicht leisten könnte&quot; quasi.</p>
<blockquote>
<p>Bis auf die Ausgabe lässt sich das wohl so machen (die nämlich arbeitet nicht mehr mit den Bildern).</p>
</blockquote>
<p>Auch die Ausgabe lässt sich so machen. Der letzte Verarbeitungsschritt hat ja dann nicht ein Bild als Output, sondern eben was auch immer in der Ausgabe ausgegeben wird. Die Queue zwischen dem letzten Verarbeitungsschritt und der Ausgabe ist dementsprechend keine Queue&lt;Bild&gt; sondern eine Queue&lt;AusgabeDatenTypDings&gt;.</p>
<p>----</p>
<p>Was die Latenz angeht... scchwierig abzuschätzen. Probier es aus.<br />
Auf jeden Fall musst du wissen was du im &quot;worst case&quot; willst, also dann wenn die CPU Leistung nichtmehr ausreicht um alle Bilder zu verarbeiten so schnell wie sie hereinkommen.</p>
<p>Wenn es viel viel wichtiger ist möglichst wenig Frames zu verlieren: alles in eigenen Threads + längere Queues + alles blockierende Queues.</p>
<p>Wenn &quot;beides irgendwie wichtig ist&quot;: rechenaufwändige Verarbeitungsschritte in eigenen Threads (kleine zu dem benachbarten Schritt dazu der weniger rechenaufwändig ist), Queue-Länge 1, erste Queue = &quot;überscchreiben&quot;, alle weiteren = &quot;blockieren&quot;.</p>
<p>Wenn es viel viel wichtiger ist möglichst geringe Latenz zu haben: alles in einem einzigen Thread.</p>
<p>----</p>
<p>Eine &quot;beides ist immer ganz ganz wichtig&quot; Lösung gibt es nicht, ausser du schaffst entsprehend schnelle Hardware an die immer &quot;mitkommt&quot;. Dann ist es aber ziemlich egal wie du es programmierst <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/1339868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339868</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 07 Aug 2007 01:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Tue, 07 Aug 2007 12:05:02 GMT]]></title><description><![CDATA[<p>Ok, vielen Dank. Damit wären alle meine Fragen soweit geklärt.</p>
<p>Wenn es irgendwann demnächst an die konkrete Umsetzung geht und noch Fragen auftauchen, melde ich mich wieder.</p>
<p>Vielen Dank nochmals,<br />
Sinthoras</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340118</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Tue, 07 Aug 2007 12:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Wed, 08 Aug 2007 14:11:41 GMT]]></title><description><![CDATA[<p>Wobei ich noch zu bedenken geben würde, dass jeder Thread einen gewissen Overhead produziert.<br />
Wenn das Zielsystem über mindestens 2 CPUs oder Kerne verfügt, würde ich auch den Weg über einen 'Controller-Thread' gehen. Wenn das Zielsystem nur über eine CPU mit nur einem Kern verfügt, würde ich alles in einen Thread packen. Da kann man dann ein bißchen Verwaltungsoverhead und Synchronisationsaufwand sparen, da sowieso alle Prozesse auf einem Kern laufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340860</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 08 Aug 2007 14:11:41 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Wed, 08 Aug 2007 14:42:13 GMT]]></title><description><![CDATA[<p>Eventuell kann es aber auch auf einer CPU helfen mehrere Threads zu haben. Beispielsweise wenn einer rechnet und einer IO macht.</p>
<p>edit: hatte hustbaer ja auch schon erläutert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340878</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 08 Aug 2007 14:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Multithreading - Aufbau(?) on Thu, 09 Aug 2007 08:41:31 GMT]]></title><description><![CDATA[<p>Ok, danke für euer aller Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341288</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Thu, 09 Aug 2007 08:41:31 GMT</pubDate></item></channel></rss>