<?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 &#x2F; const volatile Memberfunktionen]]></title><description><![CDATA[<p>volatile wird ja extrem selten verwendet. Wann sollte man eine Memberfunktion volatile bzw const volatile machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289581/volatile-const-volatile-memberfunktionen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 02:08:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289581.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Jul 2011 10:23:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 10:23:11 GMT]]></title><description><![CDATA[<p>volatile wird ja extrem selten verwendet. Wann sollte man eine Memberfunktion volatile bzw const volatile machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090239</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 08 Jul 2011 10:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 10:46:31 GMT]]></title><description><![CDATA[<p>Eine Methode die <code>volatile</code> ist kann nur bei Objekten die auch <code>volatile</code> sind aufgerufen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090249</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Fri, 08 Jul 2011 10:46:31 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 10:49:44 GMT]]></title><description><![CDATA[<p>Das weiß ich. Aber ich will wissen, wann sowas überhaupt Sinn macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090251</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 08 Jul 2011 10:49:44 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 10:56:28 GMT]]></title><description><![CDATA[<p>Da gibt es was, um bei Multithreading durch nicht-volatile zu kennzeichnen, daß ein Objekt gelockt ist, wobei die globale Variable dann an sich volatile ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090256</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 08 Jul 2011 10:56:28 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 11:00:10 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Das weiß ich. Aber ich will wissen, wann sowas überhaupt Sinn macht.</p>
</blockquote>
<p>Erster Google Treffer schrieb:</p>
<blockquote>
<p>The volatile keyword is a type qualifier used to declare that an object can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread.</p>
</blockquote>
<p>Und das sind die Falle wo so etwas benutzt wird. Guck dir z.B. mal das Prinzip von Memory-Mapped-IO an und stell dir vor, was passieren würde, wenn der Compiler anfängt an Zugriffen auf solche Speicherbereichen herumzuoptimieren:</p>
<p><a href="http://en.wikipedia.org/wiki/Memory-mapped_I/O" rel="nofollow">http://en.wikipedia.org/wiki/Memory-mapped_I/O</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090258</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Jul 2011 11:00:10 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 11:33:20 GMT]]></title><description><![CDATA[<p>volatile im Zusammenhang mit Klassenobjekten macht wenig Sinn (außer evtl bei POD-Klassen).<br />
Abgesehen davon, dass nicht ganz klar ist was - außer Zugriffen auf einzelne Member - noch einen Zugriff auf das Objekt darstellt, und somit beobachtbar ist, hat ein solches Objekt die unangenehme Eigenschaft, dass es im Prinzip über keinerlei Invarianten verfügt (ggf. abgesehen von solchen, die jeweils nur ein einzelnes Member betreffen). Dann stellt sich alleridngs die Frage, welches Konzept eigentlich durch so ein Objekt gekapselt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090264</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 08 Jul 2011 11:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 12:14:04 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Eine Methode die <code>volatile</code> ist kann nur bei Objekten die auch <code>volatile</code> sind aufgerufen werden.</p>
</blockquote>
<p><s>nur</s> <strong>auch</strong></p>
<p>Gleich wie bei <code>const</code> halt. Ein Objekt muss ja auch nicht <code>const</code> sein, damit ich ne <code>const</code> Methode aufrufen kann. Es <em>darf</em> <code>const</code> sein.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>:<br />
314 hat gefragt wann <em>Memberfunktionen</em> <code>volatile</code> sein sollten. Das hat mit Memory Mapped IO etc. nixe zu tun <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:<br />
Ja, das kenn ich auch. Man macht das Objekt <code>volatile</code> , verpasst der Klasse Lock/Unlock Methoden, und verwendet dann Hilfsklassen um das Objekt zu locken und gleichzeitig das <code>volatile</code> wegzucasten. Hab ich aber noch nie irgendwo angewendet gesehen.</p>
<p>Bei solchen Klassen könnte man dann Funktionen, die aus allen Threads ohne Locking aufgerufen werden dürfen, <code>volatile</code> machen. Damit man sie ohne Locking und ohne Cast aufrufen kann. Sowas gibt's ja öfters mal, z.B. Getter die konstante Werte zurückgeben (z.B. die ID des Threads der ein GUI-Control &quot;besitzt&quot;) oder die &quot;Cancel&quot;/&quot;IsCanceled&quot; Methoden einer &quot;Job&quot; Klasse.</p>
<p>Obwohl ich diese Verwendung von <code>volatile</code> (auf Objekte) wie gesagt noch nie gesehen habe, könnte man trotzdem Methoden die ohne Locking von überall aus &quot;safe&quot; sind mit <code>volatile</code> versehen. Einfach zu Dokumentationszwecken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090288</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 08 Jul 2011 12:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 12:38:04 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/19375">@SeppJ</a>:<br />
314 hat gefragt wann <em>Memberfunktionen</em> <code>volatile</code> sein sollten. Das hat mit Memory Mapped IO etc. nixe zu tun <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>
</blockquote>
<p>Ich sollte genauer lesen.</p>
<p>Ich erinnere mich dunkel, mal so etwas gehabt zu haben. Da ging es um ein Implementierungsdetails, welches sich ändern konnte, ohne dass der beobachtbare Zustand des Objekts sich änderte. Irgendeine interne Statistik glaube ich. Ist leider zu lange her um genaueres zu sagen und ein kurzes grep auf meinem src-Ordner sagt mir, dass ich das Programm nicht mehr habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090306</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Jul 2011 12:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 15:45:40 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ich erinnere mich dunkel, mal so etwas gehabt zu haben. Da ging es um ein Implementierungsdetails, welches sich ändern konnte, ohne dass der beobachtbare Zustand des Objekts sich änderte. Irgendeine interne Statistik glaube ich. Ist leider zu lange her um genaueres zu sagen und ein kurzes grep auf meinem src-Ordner sagt mir, dass ich das Programm nicht mehr habe.</p>
</blockquote>
<p>Eigentlich glaube ich Dir nicht, daß Du es verwechselt. Aber die Beschreibung klingt fast nach mutable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090367</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 08 Jul 2011 15:45:40 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 15:50:40 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Eigentlich glaube ich Dir nicht, daß Du es verwechselt. Aber die Beschreibung klingt fast nach mutable.</p>
</blockquote>
<p>Kann's auch gewesen sein. Ist lange her, sind beides Sachen die man selten braucht. Aber eher volatile, war nämlich etwas was ein anderer Prozess gelesen hat um etwas über den Programmverlauf zu erfahren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090369</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Jul 2011 15:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 15:55:06 GMT]]></title><description><![CDATA[<p>Vielleicht war die Variable <code>volatile</code> <em>und</em> <code>mutable</code> .</p>
<p>Aber ich sehe immern noch keine Memberfunktionen.<br />
Denn auch <code>volatile const</code> Memberfunktionen können keine nicht- <code>mutable</code> Member ändern.<br />
Und eine nur- <code>volatile</code> Memberfunktionen kann das genau so gut, wie es eine normale (non- <code>const</code> non- <code>volatile</code> ) Memberfunktionen kann <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/2090372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090372</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 08 Jul 2011 15:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 16:05:30 GMT]]></title><description><![CDATA[<p>Man könnte also zusammenfassend sagen, dass man volatile Memberfunktionen zur markierung von Thread-safen Funktionen verwenden könnte? Werden dadurch nicht Optimierungen verhindert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090381</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 08 Jul 2011 16:05:30 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 16:15:46 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <code>volatile</code> hat <strong>NICHTS</strong> mit Thread-Safety zu tun. Das ist leider ein sehr weit verbreiteter Irrglaube. Und ja, <code>volatile</code> verhindert Optimierungen, genau das ist eigentlich der Zweck von <code>volatile</code> ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090382</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Fri, 08 Jul 2011 16:15:46 GMT</pubDate></item><item><title><![CDATA[Reply to volatile &#x2F; const volatile Memberfunktionen on Fri, 08 Jul 2011 16:15:28 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <code>volatile</code> hat <strong>NICHTS</strong> mit Thread Safety zu tun. Das ist leider ein sehr weit verbreiteter Irrglaube...</p>
</blockquote>
<p>Ja, Meyers und Alexandrescu haben das mal hübsch erklärt:<br />
<a href="http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf" rel="nofollow">http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf</a></p>
<p>Im Anhang ist auch eine Erklärung über den Sinn von volatile (Variablen!), aber das wurde im Thread schon genannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090384</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Jul 2011 16:15:28 GMT</pubDate></item></channel></rss>