<?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[Parallel Programmierung]]></title><description><![CDATA[<p>Ich habe eine Frage bezüglich des möglicherweise gleichzeitigen Zugriffes von 2 Threads auf die selbe Klasse.</p>
<p>Wenn 2 Threads parallel auf unterschiedliche Eigenschaften einer Klassen-Instanz lesend/schreibend zugreifen, ist dann ein Mutex oder ähnliches notwendig?</p>
<p>Wenn 2 Threads parallel auf eine bool Eigenschaft zu greifen, wäre hier ein Mutex notwendig? Ich meine da bitweise geschrieben wird, kann kein falscher Zwischenwert gelesen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218847/parallel-programmierung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 18:24:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218847.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Jul 2008 10:01:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 10:01:23 GMT]]></title><description><![CDATA[<p>Ich habe eine Frage bezüglich des möglicherweise gleichzeitigen Zugriffes von 2 Threads auf die selbe Klasse.</p>
<p>Wenn 2 Threads parallel auf unterschiedliche Eigenschaften einer Klassen-Instanz lesend/schreibend zugreifen, ist dann ein Mutex oder ähnliches notwendig?</p>
<p>Wenn 2 Threads parallel auf eine bool Eigenschaft zu greifen, wäre hier ein Mutex notwendig? Ich meine da bitweise geschrieben wird, kann kein falscher Zwischenwert gelesen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553919</guid><dc:creator><![CDATA[PiCiJi]]></dc:creator><pubDate>Sat, 26 Jul 2008 10:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 10:13:08 GMT]]></title><description><![CDATA[<p>Das ist ein sehr komplexes Thema kauf dir erst einmal ein anständiges Buch und lies das von A-Z durch, damit du ungefähr weißt um was es dabei geht.<br />
Dann kannst langsam anfangen eigene multithreaded Awendungen zu schreiben.</p>
<p>Das Buch hier behandelt POSIX-Threads, aber das ist nicht weiter schlimm, denn alle Betriebssysteme haben die gleichen Locking-Mechanismen und du musst nur einmal das Prinzip verstehen.</p>
<p><a href="https://duckduckgo.com/?q=isbn+0201633922&amp;cppnetbooks" rel="nofollow">Programming with POSIX Threads | ISBN: 0201633922</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553921</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Sat, 26 Jul 2008 10:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 11:04:46 GMT]]></title><description><![CDATA[<p>Was ich soll das ganze Buch lesen...ich lerne lieber aus Fragen und konkreten Problemen. Trotzdem danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553936</guid><dc:creator><![CDATA[PiCiJi]]></dc:creator><pubDate>Sat, 26 Jul 2008 11:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 11:09:24 GMT]]></title><description><![CDATA[<p>PiCiJi schrieb:</p>
<blockquote>
<p>Wenn 2 Threads parallel auf unterschiedliche Eigenschaften einer Klassen-Instanz lesend/schreibend zugreifen, ist dann ein Mutex oder ähnliches notwendig?</p>
</blockquote>
<p>Kommt auf die Zugriffe an</p>
<blockquote>
<p>Wenn 2 Threads parallel auf eine bool Eigenschaft zu greifen, wäre hier ein Mutex notwendig? Ich meine da bitweise geschrieben wird, kann kein falscher Zwischenwert gelesen werden.</p>
</blockquote>
<p>Auf aktueller PC Hardware brauchst du da keines.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553938</guid><dc:creator><![CDATA[ShortShorts]]></dc:creator><pubDate>Sat, 26 Jul 2008 11:09:24 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 11:15:09 GMT]]></title><description><![CDATA[<p>Vielleicht hilft Dir dieses Tutorial bezüglich Grundverständnis:<br />
<a href="http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel17.htm" rel="nofollow">http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel17.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553941</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sat, 26 Jul 2008 11:15:09 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 12:53:00 GMT]]></title><description><![CDATA[<p>PiCiJi schrieb:</p>
<blockquote>
<p>Wenn 2 Threads parallel auf eine bool Eigenschaft zu greifen, wäre hier ein Mutex notwendig? Ich meine da bitweise geschrieben wird, kann kein falscher Zwischenwert gelesen werden.</p>
</blockquote>
<p>Kann man so nicht sagen. Kommt auf die Hardware an. Wenn die Daten mit einem einzigen Prozessor(!)-Befehl geschrieben werden, kommst du in keine Lese-Probleme.<br />
Phantom-Reads kannst du aber auch weiterhin haben, insbesondere bei mehreren Prozessoren.<br />
Zusätzlich, wenn die Daten im Speicher &quot;dicht&quot; zusammen liegen, z.b. Member einer Klasse, &quot;zerlegst&quot; du die Cacheline des anderen Prozessors. Auf diese Art und Weise Daten zu teilen ist keine besonders gute Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553958</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Sat, 26 Jul 2008 12:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 18:31:30 GMT]]></title><description><![CDATA[<p>Ich habe 2 Threads (Haupt Thread + worker thread). Es geht um Emulation eines Mehrkernprozessor Systems. Gegenwärtig ist der worker thread dafür da, die Pixel jeder Bildzeile zu berechnen und anschließend zu cachen. Der Haupt thread wartet dabei am Ende einer Bildzeile(wenn nötig) bis der workerthread fertig ist, erst dann läuft der Haupt Thread weiter und beauftragt den worker thread mit der nächsten Bildzeile. Die Communication der Threads geschieht über Events. Diese Arbeitsteilung hat mir einen schönen Geschwindigkeitsvorteil eingebracht. Das ist der Ist Stand und meine ersten Schritte in der Parallelprogrammierung.</p>
<p>Es gibt damit grundsätzlich 2 Probleme:<br />
1. Ich verwende noch keine Mutex usw. um Variablen zu schützen die parallel vom Haupthtread beschrieben bzw. vom worker thread gelesen werden können. (Grafik Artefakte und Abstürze sind die Folge)<br />
2. Die Synchro ist nur Zeilen basiert. (für Emulation in der Regel ausreichend nicht jedoch wenn man die Berechnung der Bildzeile in einem 2. thread echt parallel laufen lässt)</p>
<p>Ich bin jetzt dabei eine Klasse Arbeitskopie zu erstellen. Die Instanzen der Klasse stellen die Arbeitskopie für den workerthread dar. Anhand einer Arbeitskopie berechnet der worker thread x Pixel der Bildzeile.</p>
<p>Bevor sich etwas an den Varibalen der Bildberechnung ändert, wid die Arbeitskopie erstellt, danach kann die Änderung wirksam werden usw. Nach jeder Berechnung von x Pixeln anhand der Arbeitskopie schaut der worker thread ob schon die nächste Arbeitskopie vorliegt. Ist das so gehts direkt weiter für den workerthread. Anderfalls wartet der workerthread auf ein event des main threads, welches nach dem Schreiben einer weiteren Arbeitskopie auftritt. Der main thread läuft ohne Pause bis zum Ende des kompletten Bildes durch, dort pausiert er, wenn der worker thread noch nicht alle Arbetskopien abgeabeitet hat. Der main thread braucht an dieser Stelle das komplete Bild im Cache um es zu rendern. Danach geht das Spiel von vorne los.</p>
<p>Jetzt zum eigentlichen Anliegen: Wenn der worker thread anhand einer Arbeitskopie-Instanz x Pixel berechnet und parallel dazu der main thread eine weitere Instanz anleget und eine weitere Arbeitskopie in diese überträgt, muss hier sicher gestellt werden das beide Threads nicht parallel auf verschiedene Instanzen der Klasse (oder die Klasse allgemein) zugreifen dürfen.</p>
<p>Ich speichere Zeiger auf Instanzen der Klasse Arbeitskopie in einem Vektor ab, welcher eine statische Eigenschaft der Klasse Arbeitskopie ist. Eine weitere static Eigenschaft ist die Varible 'insert', welche die nächste Position in diesem Vektor darstellt.<br />
Ich meine nur einen Mutex oder ähnliches (habe mich damit noch nicht beschäftigt) für die Varible 'insert' zu benötigen. Die Varbiable dient dem main thread dazu den nächsten Zeiger auf eine Instanz der Klasse Arbeitskopie abzulgen und dem workerthread zu entscheiden ob noch eine Arbeitskopie abgearbeitet werden muss oder ob der worker thread pausiert werden soll.</p>
<p>Ich hoffe auf ein paar Anregungen oder Korrekturen meiner Vorgehensweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1554147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1554147</guid><dc:creator><![CDATA[PiCiJi]]></dc:creator><pubDate>Sat, 26 Jul 2008 18:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Parallel Programmierung on Sat, 26 Jul 2008 19:58:12 GMT]]></title><description><![CDATA[<p>Tja, da hast du den Salat, hättest du halt auf mich gehört und dir erst einmal etwas Theorie dazu reingezogen bevor du angefängst..</p>
<p>Abgesehen davon kann ich dir nicht einmal helfen, selbst wenn ich es wollte, da du vergessen hast eine Frage zu stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1554219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1554219</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Sat, 26 Jul 2008 19:58:12 GMT</pubDate></item></channel></rss>