<?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[atomic und test auf wert]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin etwas verwirrt: wenn ich eine atomare variable habe, wie teste ich auf z.B. den Wert NULL?</p>
<pre><code>std::atomic&lt;int&gt; *a;
// some code

if (a == NULL)
   // do something
</code></pre>
<p>Denn der &quot;==&quot; operator ist ja nicht atomar bzw. die if-bedingung im ganzen ist nicht atomar. Muss ich hier einen Mutex verwenden zum locken?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/336466/atomic-und-test-auf-wert</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 09:36:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336466.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Jan 2016 15:16:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 15:16:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin etwas verwirrt: wenn ich eine atomare variable habe, wie teste ich auf z.B. den Wert NULL?</p>
<pre><code>std::atomic&lt;int&gt; *a;
// some code

if (a == NULL)
   // do something
</code></pre>
<p>Denn der &quot;==&quot; operator ist ja nicht atomar bzw. die if-bedingung im ganzen ist nicht atomar. Muss ich hier einen Mutex verwenden zum locken?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2484510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484510</guid><dc:creator><![CDATA[tuxedo]]></dc:creator><pubDate>Sun, 24 Jan 2016 15:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 16:02:20 GMT]]></title><description><![CDATA[<p>Du brauchst bei einem Vergleich überhaupt nicht zu locken. Ob ein anderer Thread die Variable währenddessen verändert ist ja schließlich egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2484517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484517</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Sun, 24 Jan 2016 16:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 16:03:36 GMT]]></title><description><![CDATA[<p>tuxedo schrieb:</p>
<blockquote>
<pre><code>std::atomic&lt;int&gt; *a;
// some code

if (a == NULL)
   // do something
</code></pre>
<p>Denn der &quot;==&quot; operator ist ja nicht atomar bzw. die if-bedingung im ganzen ist nicht atomar. Muss ich hier einen Mutex verwenden zum locken?</p>
</blockquote>
<p><code>a</code> ist in deinem Beispiel nicht atomar, sondern ein nicht-atomarer pointer auf einen atomaren <code>int</code> . Vergleichen kannst du <code>std::atomic&lt;&gt;</code> -basierte Typen üblicherweise wie<br />
normale Variablen auch via <code>x == nullptr</code> oder indem du den gekapselten Wert explizit lädst via load()-member-Funktion ( <code>x.load() == nullptr</code> , o.ä.).</p>
<p>Das macht aber eventuell nicht das was du eigenlich erreichen möchtest. Vielleicht beschreibst du mal konkret, was du vorhast, dann können wir dir eher sagen,<br />
wie du das mit Atomics erreichen kannst, oder ob Atomics überhaupt die richtige Wahl für das Problem sind.</p>
<p>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2484518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484518</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Sun, 24 Jan 2016 16:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 17:37:03 GMT]]></title><description><![CDATA[<p>roflo schrieb:</p>
<blockquote>
<p>Du brauchst bei einem Vergleich überhaupt nicht zu locken. Ob ein anderer Thread die Variable währenddessen verändert ist ja schließlich egal.</p>
</blockquote>
<p>eben nicht. Das hängt davon ab, ob der Compiler den Vergleich in einen einzigen Maschinenbefehl kompeiliert oder eben nicht. Auf einer 32-Bit-CPU ohne (nehmen wir mal an) 64-Bit-Vergleichsbefehl können es zwei Maschinenbefehle sein, und da kann folgendes passieren:</p>
<p>T1: Test Low == 0 ?<br />
T2: Set Low != 0<br />
T2: ...<br />
T1: Test High == 0 ?</p>
<p>T1 glaubt nach dem zweiten Test, daß Low == High == 0, obwohl das wegen T2 nicht mehr stimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2484523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484523</guid><dc:creator><![CDATA[klassenmethode]]></dc:creator><pubDate>Sun, 24 Jan 2016 17:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 18:01:29 GMT]]></title><description><![CDATA[<p>Das hab ich mir auch gedacht. Mir fällt aber kein Fall ein, in welchem soetwas ein Problem darstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2484526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484526</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Sun, 24 Jan 2016 18:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 18:02:58 GMT]]></title><description><![CDATA[<p>roflo schrieb:</p>
<blockquote>
<p>Das hab ich mir auch gedacht. Mir fällt aber kein Fall ein, in welchem soetwas ein Problem darstellt.</p>
</blockquote>
<p>Darum geht's nicht.<br />
Bzw. es ist auch der gänzlich falsche Ansatz wenn man Programme mit Multithreading schreiben will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2484527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484527</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 24 Jan 2016 18:02:58 GMT</pubDate></item><item><title><![CDATA[Reply to atomic und test auf wert on Sun, 24 Jan 2016 18:23:40 GMT]]></title><description><![CDATA[<p>Ei, was laber ich da, ihr habt recht <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2484535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2484535</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Sun, 24 Jan 2016 18:23:40 GMT</pubDate></item></channel></rss>