<?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[volatile bei Objekten]]></title><description><![CDATA[<p>Hi,<br />
kurze Frage. hab bis jetzt leider nirgends eine ausreichende Antwort finden können.</p>
<p>Macht das Schlüsselwort volatile bei Klasseninstanzen überhaupt Sinn? Oder ist es nur bei Instanzen von primitiven Datentypen sinnvoll?<br />
Wie verhält sich der Compiler (g++ 4.3 bzw 4.1) bei volatile wenn damit Objekte von Klassen deklariert werden?<br />
Wenn ich ne (stl) map damit deklarier, hab ich das Problem, dass ich die Klassenfunktionen und -operatoren nicht mehr aufrufen kann.</p>
<p>Danke schon mal im voraus</p>
<p>Gruss<br />
ironeagle</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231556/volatile-bei-objekten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 20:26:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231556.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Jan 2009 15:48:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to volatile bei Objekten on Mon, 12 Jan 2009 15:48:57 GMT]]></title><description><![CDATA[<p>Hi,<br />
kurze Frage. hab bis jetzt leider nirgends eine ausreichende Antwort finden können.</p>
<p>Macht das Schlüsselwort volatile bei Klasseninstanzen überhaupt Sinn? Oder ist es nur bei Instanzen von primitiven Datentypen sinnvoll?<br />
Wie verhält sich der Compiler (g++ 4.3 bzw 4.1) bei volatile wenn damit Objekte von Klassen deklariert werden?<br />
Wenn ich ne (stl) map damit deklarier, hab ich das Problem, dass ich die Klassenfunktionen und -operatoren nicht mehr aufrufen kann.</p>
<p>Danke schon mal im voraus</p>
<p>Gruss<br />
ironeagle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644009</guid><dc:creator><![CDATA[Iron-eagle]]></dc:creator><pubDate>Mon, 12 Jan 2009 15:48:57 GMT</pubDate></item><item><title><![CDATA[Reply to volatile bei Objekten on Mon, 12 Jan 2009 18:49:59 GMT]]></title><description><![CDATA[<p>Iron-eagle schrieb:</p>
<blockquote>
<p>Hi,<br />
kurze Frage. hab bis jetzt leider nirgends eine ausreichende Antwort finden können.</p>
<p>Macht das Schlüsselwort volatile bei Klasseninstanzen überhaupt Sinn?</p>
</blockquote>
<p>Das ist Ansichtssache.</p>
<blockquote>
<p>Oder ist es nur bei Instanzen von primitiven Datentypen sinnvoll?</p>
</blockquote>
<p>...</p>
<blockquote>
<p>Wie verhält sich der Compiler (g++ 4.3 bzw 4.1) bei volatile wenn damit Objekte von Klassen deklariert werden?</p>
</blockquote>
<p>Gleich wie bei const, nur eben volatile statt const.<br />
Soll heissen: auf ein(e) &quot;const&quot; Objekt/Referenz kannst du nur Memberfunktionen aufrufen die selbst &quot;const&quot; sind, und auf ein(e) &quot;volatile&quot; Objekt/Referenz kannst du nur Memberfunktionen aufrufen die selbst &quot;volatile&quot; sind.</p>
<blockquote>
<p>Wenn ich ne (stl) map damit deklarier, hab ich das Problem, dass ich die Klassenfunktionen und -operatoren nicht mehr aufrufen kann.</p>
</blockquote>
<p>s.o.<br />
Da keine normale Klasse Memberfunktionen hat die als &quot;volatile&quot; markiert sind, kann man auch keine Memberfunktionen auf &quot;volatile&quot; Objekten/Referenzen aufrufen.</p>
<p>----</p>
<p>Man *kann* volatile für Klassen in der Art verwenden, dass man alles was &quot;shared data&quot; ist als volatile deklariert. Dadurch kann man mit normalen Memberfunktionen nichtmehr drauf zugreifen. Dann bastelt man sich einen Mechanismus der das zuständige Lock holt, und das volatile wegcastet (und der das Lock automatisch wieder frei gibt). Das Thema wurde u.A. auf der Boost mailing Liste diskutiert, kannst ja direkt dort nachlesen:</p>
<p><a href="http://www.google.com/search?hl=en&amp;q=locking_ptr+volatile&amp;btnG=Google+Search" rel="nofollow">http://www.google.com/search?hl=en&amp;q=locking_ptr+volatile&amp;btnG=Google+Search</a></p>
<p>Genaugenommen braucht man um das zu erreichen aber kein &quot;volatile&quot; -- man kann genausogut eine Wrapper-Klasse (Template) verwenden. Die Version mit Wrapper-Klasse ist sogar etwas flexibler, da man u.A. in der Wrapper klasse noch mit abspeichern kann welche Mutex zuständig ist, bzw. allgemein: wie das Objekt &quot;gelockt&quot; werden muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644110</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 12 Jan 2009 18:49:59 GMT</pubDate></item></channel></rss>