<?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[Thread Zugriffe auf Attribute]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe ein kleines Synchronisationsproblem bei Threads. Und zwar habe ich zwei Threads, die Lese- und Schreibzugriffe auf ein Attribut ausüben.<br />
Der eine Thread liest von dem Attribut, während der zweite Thread lesend und schreibend auf das Attribut zugreift. Mein Problem ist, das der zweite Thread über eine Methode einer DLL gestartet wird und dieser Methode das Attribut per Referenz übergeben wird. Dieses Attribut wird dann immer wieder innerhalb der DLL verändert und dadurch ändert sich der Wert des Attributes auch in dem ersten Thread.</p>
<p>Meine Frage, wie kann ich dieses Attribut so schützen, das nur ein Thread auf das Attribut gleichzeitig zugreifen kann?</p>
<pre><code class="language-cpp">Pseudo code:
class 1
public:
    int attribut;
    void setAttribut(int attr){this-&gt;attribut = attr;}
    int getAttribut(){ return attribut;}

thread2:

createThread(MethodeDLL(int &amp;attribut));

thread1:
int var = getAttribut();
</code></pre>
<p>Hat einer eine Idee wie ich die Zugriffe schützen kann? An den Code der DLL komme ich nicht ran und kann da auch nichts einbauen an code.</p>
<p>Vielen Dank im voraus schon einmal.</p>
<p>Mit freundlichem Gruß</p>
<p>Buchenberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155892/thread-zugriffe-auf-attribute</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 18:10:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155892.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Aug 2006 21:02:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread Zugriffe auf Attribute on Thu, 10 Aug 2006 21:02:36 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe ein kleines Synchronisationsproblem bei Threads. Und zwar habe ich zwei Threads, die Lese- und Schreibzugriffe auf ein Attribut ausüben.<br />
Der eine Thread liest von dem Attribut, während der zweite Thread lesend und schreibend auf das Attribut zugreift. Mein Problem ist, das der zweite Thread über eine Methode einer DLL gestartet wird und dieser Methode das Attribut per Referenz übergeben wird. Dieses Attribut wird dann immer wieder innerhalb der DLL verändert und dadurch ändert sich der Wert des Attributes auch in dem ersten Thread.</p>
<p>Meine Frage, wie kann ich dieses Attribut so schützen, das nur ein Thread auf das Attribut gleichzeitig zugreifen kann?</p>
<pre><code class="language-cpp">Pseudo code:
class 1
public:
    int attribut;
    void setAttribut(int attr){this-&gt;attribut = attr;}
    int getAttribut(){ return attribut;}

thread2:

createThread(MethodeDLL(int &amp;attribut));

thread1:
int var = getAttribut();
</code></pre>
<p>Hat einer eine Idee wie ich die Zugriffe schützen kann? An den Code der DLL komme ich nicht ran und kann da auch nichts einbauen an code.</p>
<p>Vielen Dank im voraus schon einmal.</p>
<p>Mit freundlichem Gruß</p>
<p>Buchenberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114869</guid><dc:creator><![CDATA[Buchenberg]]></dc:creator><pubDate>Thu, 10 Aug 2006 21:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to Thread Zugriffe auf Attribute on Thu, 10 Aug 2006 21:18:27 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Mutex" rel="nofollow">http://de.wikipedia.org/wiki/Mutex</a> sollte dir helfen</p>
<p>ich vermute du benutzt die winapi dann siehe <a href="http://msdn.microsoft.com/library/en-us/dllproc/base/createmutex.asp" rel="nofollow">http://msdn.microsoft.com/library/en-us/dllproc/base/createmutex.asp</a><br />
bsp ist auch dabei</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114882</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Thu, 10 Aug 2006 21:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to Thread Zugriffe auf Attribute on Fri, 11 Aug 2006 07:09:58 GMT]]></title><description><![CDATA[<p>Danke für deine schnelle Antwort. Habe mir das ganze mal angeschaut. Mein Problem hierbei ist, das ich dem Thread der das Attribut per Referenz ändert leider keinen Code hinzufügen kann um einen Bereich zu erstellen indem ich über das Mutex ein lock bzw. ein unlock durchführen kann, da der eine Thread wie gesagt das Ganze per Referenz direkt an der Speicherstelle ändert, ohne das dieser eine set Methode aufruft, in der ich das lock und unlock einbauen könnte.</p>
<p>Gibt es hierfür irgendwas in C++?</p>
<p>Danke im voraus.</p>
<p>Mfg Buchenberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114979</guid><dc:creator><![CDATA[Buchenberg]]></dc:creator><pubDate>Fri, 11 Aug 2006 07:09:58 GMT</pubDate></item><item><title><![CDATA[Reply to Thread Zugriffe auf Attribute on Fri, 11 Aug 2006 07:52:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Mit reinem C++ wirst Du da nicht weiterkommen, da C++ keine Threads kennt.<br />
Du musst schon die API des Betriebssystems benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115013</guid><dc:creator><![CDATA[Cosmixx]]></dc:creator><pubDate>Fri, 11 Aug 2006 07:52:35 GMT</pubDate></item><item><title><![CDATA[Reply to Thread Zugriffe auf Attribute on Fri, 11 Aug 2006 08:34:15 GMT]]></title><description><![CDATA[<p>Buchenberg schrieb:</p>
<blockquote>
<p>...Mein Problem hierbei ist, das ... der eine Thread wie gesagt das Ganze per Referenz direkt an der Speicherstelle ändert, ohne das dieser eine set Methode aufruft, in der ich das lock und unlock einbauen könnte.<br />
...</p>
</blockquote>
<p>Das ist ein typisches Beispiel dafür, warum getter/setter sinnvoll sind <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 />
Aber wenn Du kein Redesign durchführen kannst/willst, wird Dir nichts anderes übrigleiben, als jede Nutzung der Referenz (außerhalb der Klasse; im aufrufenden Code) per Mutex zu serialisieren.<br />
Das ist mühsam und fehleranfällig (wer weiß schon, ob sich nicht irgendwer eine andere Referenz/Pointer geholt (oder gar via Pointerarithmetik konstruiert) hat ?), aber ich sehe da sonst auch keinen anderen Weg, wenn Du multithreading brauchst.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115063</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 11 Aug 2006 08:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Thread Zugriffe auf Attribute on Mon, 14 Aug 2006 12:09:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen, danke für Eure Antworten. Ein Redesign kommt leider nicht in Frage, da ich den Code für die DLL nicht habe. Werde es mit Mutex versuchen. Danke</p>
<p>Grüße</p>
<p>Buchenberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116890</guid><dc:creator><![CDATA[Buchenberg]]></dc:creator><pubDate>Mon, 14 Aug 2006 12:09:47 GMT</pubDate></item></channel></rss>