<?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[Anfängerfragen zu Multithreading]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin Laie und programmiere viel mit OpenCV und neuerdings auch GUIs mit Qt.<br />
Damit die GUI immer ansprechbar bleibt bekommt die Bildverarbeitung bisher zwei eigene Threads. Der erste &quot;sammelt&quot; die Bilder und verarbeitet diese vor. Anschließend kommen diese Bilder dann zum zweiten Thread, wo die eigentliche Bildverarbeitung stattfindet.<br />
Das funktioniert auch alles gut, doch ich habe da so einige offene Fragen <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>Grundsätzlich wäre es natürlich klug eine entsprechende Grafikkarte zu nutzen, auf der ich direkt meine Bildverarbeitung durchführen könnte. Allerdings wäre die Anwendung dann nicht mehr wirklich portabel, da nicht jeder Rechner über eine geeignete GPU verfügt.</p>
<p>Im Moment schreibe ich ein Programm, bei dem exakt dieselben Berechnungen für verschiedene Bildausschnitte durchgeführt werden sollen.<br />
Das alles in einem Thread durchzuführen ist schon nicht mehr so flott und da kommt natürlich der Gedanke nach mehr Parallelisierung.</p>
<p>Nun ist es aber so, dass meine Verarbeitungsklasse nochmal Objekte für 5 andere Klassen erzeugt und diese besitzen teilweise ebenfalls wieder Objekte die aus anderen Klassen erzeugt werden. Ich bin mir sehr sicher, dass meine Klassen momentan nicht Threadsicher sind, aber ich weiß ehrlich gesagt auch nicht wirklich, wann eine Klasse Threadsicher ist.</p>
<p>Ich weiß was ein Mutex ist, nur mir ist überhaupt nicht klar, wann eine Variable gefährtdet ist, so dass ich einen Mutex einsetzen müsste.<br />
Auch werden in den genutzten Klassen teilweise lokale Variablen in einzelenen Funktionen eingesetzt. Ist das unkritisch oder würde ich genau hier einen Mutex brauchen? Oder sollte man alle lokalen Variablen durch Klassenvariablen ersetzten?</p>
<p>Grundsätzlich stellt sich mir die Frage, wie viele Threads machen eigentlich Sinn?<br />
Wenn ich mal in Taskmanager von Windows sehe, werden mir über 1000 Threads angezeigt.</p>
<p>Für viele von euch sind meine Fragen vielleicht trivial.<br />
Ich habe allerdings noch keine Antworten parat und das Kapitel zu Multithreading in meinem C++ Buch ist leider ein Witz <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>Daher freue ich mich über eure Antworten. <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>Viele Dank für die Hilfe <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/topic/333152/anfängerfragen-zu-multithreading</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 05:21:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333152.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Jun 2015 19:05:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Mon, 15 Jun 2015 19:05:00 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin Laie und programmiere viel mit OpenCV und neuerdings auch GUIs mit Qt.<br />
Damit die GUI immer ansprechbar bleibt bekommt die Bildverarbeitung bisher zwei eigene Threads. Der erste &quot;sammelt&quot; die Bilder und verarbeitet diese vor. Anschließend kommen diese Bilder dann zum zweiten Thread, wo die eigentliche Bildverarbeitung stattfindet.<br />
Das funktioniert auch alles gut, doch ich habe da so einige offene Fragen <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>Grundsätzlich wäre es natürlich klug eine entsprechende Grafikkarte zu nutzen, auf der ich direkt meine Bildverarbeitung durchführen könnte. Allerdings wäre die Anwendung dann nicht mehr wirklich portabel, da nicht jeder Rechner über eine geeignete GPU verfügt.</p>
<p>Im Moment schreibe ich ein Programm, bei dem exakt dieselben Berechnungen für verschiedene Bildausschnitte durchgeführt werden sollen.<br />
Das alles in einem Thread durchzuführen ist schon nicht mehr so flott und da kommt natürlich der Gedanke nach mehr Parallelisierung.</p>
<p>Nun ist es aber so, dass meine Verarbeitungsklasse nochmal Objekte für 5 andere Klassen erzeugt und diese besitzen teilweise ebenfalls wieder Objekte die aus anderen Klassen erzeugt werden. Ich bin mir sehr sicher, dass meine Klassen momentan nicht Threadsicher sind, aber ich weiß ehrlich gesagt auch nicht wirklich, wann eine Klasse Threadsicher ist.</p>
<p>Ich weiß was ein Mutex ist, nur mir ist überhaupt nicht klar, wann eine Variable gefährtdet ist, so dass ich einen Mutex einsetzen müsste.<br />
Auch werden in den genutzten Klassen teilweise lokale Variablen in einzelenen Funktionen eingesetzt. Ist das unkritisch oder würde ich genau hier einen Mutex brauchen? Oder sollte man alle lokalen Variablen durch Klassenvariablen ersetzten?</p>
<p>Grundsätzlich stellt sich mir die Frage, wie viele Threads machen eigentlich Sinn?<br />
Wenn ich mal in Taskmanager von Windows sehe, werden mir über 1000 Threads angezeigt.</p>
<p>Für viele von euch sind meine Fragen vielleicht trivial.<br />
Ich habe allerdings noch keine Antworten parat und das Kapitel zu Multithreading in meinem C++ Buch ist leider ein Witz <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>Daher freue ich mich über eure Antworten. <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>Viele Dank für die Hilfe <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/2456774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456774</guid><dc:creator><![CDATA[Britzi]]></dc:creator><pubDate>Mon, 15 Jun 2015 19:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Mon, 15 Jun 2015 19:39:43 GMT]]></title><description><![CDATA[<p>Ein normales c++buch kann das nicht leisten, schon wegen der Menge an papier, die hinzukäme. <a href="http://www.manning.com/williams/" rel="nofollow">http://www.manning.com/williams/</a> ist ca. 500 Seiten dick - aber das wäre evtl das richtige für dich. Anthony Williams hat an der c++ thread lib mitgearbeitet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456779</guid><dc:creator><![CDATA[oh_so_parallel]]></dc:creator><pubDate>Mon, 15 Jun 2015 19:39:43 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Mon, 15 Jun 2015 19:58:20 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich weiß was ein Mutex ist, nur mir ist überhaupt nicht klar, wann eine Variable gefährtdet ist, so dass ich einen Mutex einsetzen müsste.</p>
</blockquote>
<p>Ein Variable ist 'gefährdet' wenn zwei Threads gleichzeitig lesend/schreibend darauf zugreifen. Also keine lokalen sondern nur Klassen/globale Variablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456782</guid><dc:creator><![CDATA[coder777]]></dc:creator><pubDate>Mon, 15 Jun 2015 19:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Mon, 15 Jun 2015 20:43:02 GMT]]></title><description><![CDATA[<p>coder777 schrieb:</p>
<blockquote>
<p>Ein Variable ist 'gefährdet' wenn zwei Threads gleichzeitig lesend/schreibend darauf zugreifen.</p>
</blockquote>
<p>Vielleicht etwas präziser: wenn mehr als ein Thread und mindestens einer davon schreibend darauf zugreifen. Wenn alle nur lesen gibts kein Problem. Sorry für die Korinthenkackerei <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>
<p>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456787</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Mon, 15 Jun 2015 20:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Mon, 15 Jun 2015 20:46:13 GMT]]></title><description><![CDATA[<p>Am einfachsten finde ich es, wenn man gar keinen geteilten Zustaende mehr hat und alle informationen ueber message passing zuteilt. Eine library kann ich dir dazu aber auch nicht nennen. Ich habe mal etwas aehnliches auf basis von boost selbstgeschrieben, wobei mir die verwendete Datenstruktur aber zu komplex und zu low-level gleichzeitig war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456788</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Mon, 15 Jun 2015 20:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Tue, 16 Jun 2015 09:24:02 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>vielen Dank für die ganzen Antworten. <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>Nun bin ich schon eine Ecke schlauer.</p>
<p>Das genannte Buch werde mich mir nächste Woche mal ausleihen.</p>
<p>Ansonsten werde ich einfach mal probieren mein Programm umzustricken und hoffe, dass keine Fehler auftauchen. ^^</p>
<p>Message Passing meint sowas wie Signale und Slots in Qt, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456839</guid><dc:creator><![CDATA[Britzi]]></dc:creator><pubDate>Tue, 16 Jun 2015 09:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Tue, 16 Jun 2015 10:03:48 GMT]]></title><description><![CDATA[<p>Du kannst auch mal in <a href="https://www.threadingbuildingblocks.org/" rel="nofollow">TBB</a> reinschauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456842</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 16 Jun 2015 10:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Tue, 16 Jun 2015 10:35:51 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23821">@Marthog</a><br />
Und weil es keine Libs gibt die du empfehlen kannst, und dein selbststrick Versuch auch viel zu kompliziert geendet hat, nennst du es einfach?<br />
Das musst du mir jetzt nochmal erklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456850</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 16 Jun 2015 10:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Fri, 19 Jun 2015 08:24:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Grundsätzlich wäre es natürlich klug eine entsprechende Grafikkarte zu nutzen, auf der ich direkt meine Bildverarbeitung durchführen könnte. Allerdings wäre die Anwendung dann nicht mehr wirklich portabel, da nicht jeder Rechner über eine geeignete GPU verfügt.</p>
</blockquote>
<p>Generell, es gibt libraries und Sprachen die portabel sind.<br />
wenn du OpenGL und GLSL verwendest, würde das auf Windows, Linux, Mac laufen.<br />
Wenn du dich in Opengl an die ES Profile hälst, kämen auch noch die mobilen Plattformen hinzu (android, windows phone, Raspi's ....)<br />
Also am Meisten unterscheiden sich da die plattformen nicht am Umfang der sprache, sondern an der Leistungsfähigkeit und paar &quot;Features&quot; (Texturformate etc)</p>
<p>Glaub aber kaum das du nen &quot;komplettes&quot; Bildverarbeitungsprogramm in basis c++ + OpenGl + shader schreiben willst / kannst.<br />
Aber die Grafikroutinen bekommst plattformunabhaengig hin ... eher das problem ist eingabe, Fenster und Apllikationsmanagment ^^</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457171</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 19 Jun 2015 08:24:39 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Fri, 19 Jun 2015 20:54:41 GMT]]></title><description><![CDATA[<blockquote>
<p>The Best Synchronization Is No Synchronization: Alternatives to semaphores, mutexes, and CRITICAL_SECTIONs</p>
</blockquote>
<p><a href="http://www.flounder.com/no_synchronization.htm" rel="nofollow">http://www.flounder.com/no_synchronization.htm</a></p>
<p>Bin damit immer gut gefahren, ist aber MFC.<br />
Bin da auf der Seite von Marthog.</p>
<p>Daß hustbaer eigentlich fast immer nur negativ (nicht immer konstruktiv) rüber kommt ist etwas an dem er arbeiten sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457259</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Fri, 19 Jun 2015 20:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfragen zu Multithreading on Fri, 19 Jun 2015 23:02:43 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23821">@Marthog</a><br />
Und weil es keine Libs gibt die du empfehlen kannst, und dein selbststrick Versuch auch viel zu kompliziert geendet hat, nennst du es einfach?<br />
Das musst du mir jetzt nochmal erklären.</p>
</blockquote>
<p>Mein selbstgemachtes war schwer, weil ich es selbst machen und mich dazu in boost.lockfree einarbeiten musste. Danach ging es, auch wenn es nicht generisch und nicht genug gekapselt war.<br />
Rusts standardlibrary ist ziemlich gut und das sollte sich auch sehr aehnlich in C++ umsetzen lassen. Die Frage ist nur, welche library den richtigen tradeoff aus benutzbarkeit und sicherheit hinbekommt und da kenne ich mich nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457273</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Fri, 19 Jun 2015 23:02:43 GMT</pubDate></item></channel></rss>