<?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[C++ char variablen threadsafe?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich schreibe gerade ein kleines Programm und muss mir nun auch Gedanken über die &quot;threadsafeness&quot; machen. Ich könnte natürlich mutex benutzen, aber dann ist mir aufgefallen, dass alle Variablen, welche über mehrere Threads hinweg benutzt werden im Grunde nur 1 Byte groß sein müssten. Sind diese nicht immer threadsafe? Weniger als 1 Byte kann der Prozessor ja eh nicht verändern.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295400/c-char-variablen-threadsafe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 11:16:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295400.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Nov 2011 15:58:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 17:29:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich schreibe gerade ein kleines Programm und muss mir nun auch Gedanken über die &quot;threadsafeness&quot; machen. Ich könnte natürlich mutex benutzen, aber dann ist mir aufgefallen, dass alle Variablen, welche über mehrere Threads hinweg benutzt werden im Grunde nur 1 Byte groß sein müssten. Sind diese nicht immer threadsafe? Weniger als 1 Byte kann der Prozessor ja eh nicht verändern.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2143983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143983</guid><dc:creator><![CDATA[threadter]]></dc:creator><pubDate>Sun, 13 Nov 2011 17:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 16:20:58 GMT]]></title><description><![CDATA[<p>Definier doch mal threadsafe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2143987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143987</guid><dc:creator><![CDATA[8cht]]></dc:creator><pubDate>Sun, 13 Nov 2011 16:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 16:24:50 GMT]]></title><description><![CDATA[<p>Der Standard kennt keine Threads. (EDIT: Hier meinte ich den C++03 Standard)</p>
<p>Du kannst afaik zum Beispiel Probleme mit Caching erhalten.</p>
<p>Falls du C++0x verwendest könntest du ein std::atomic&lt;char&gt; in Erwägung ziehen.</p>
<p>Aber mal eine andere Frage... Wofür brauch man ein threadsicheres char?</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2143988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143988</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 13 Nov 2011 16:24:50 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 16:44:09 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber mal eine andere Frage... Wofür brauch man ein threadsicheres char?</p>
</blockquote>
<p>Zb. um den Zustand eines Tasks zu markieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144000</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sun, 13 Nov 2011 16:44:09 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 17:12:40 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<blockquote>
<p>Aber mal eine andere Frage... Wofür brauch man ein threadsicheres char?</p>
</blockquote>
<p>Zb. um den Zustand eines Tasks zu markieren.</p>
</blockquote>
<p>Seit wann codiert man Zustände in Buchstaben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Also ich nehme für Zustände enums bzw. int <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144021</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 13 Nov 2011 17:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 17:27:38 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Seit wann codiert man Zustände in Buchstaben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Chars müssen nicht unbedingt Buchstaben sein.<br />
@OP: je nachdem, was für Zustände und Tasks es sind, sind vielleicht auch futures eine Möglichkeit, die Kommunikation über den Zustand der Bibliothek zu überlassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144029</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 13 Nov 2011 17:27:38 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 18:01:58 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>Seit wann codiert man Zustände in Buchstaben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Chars müssen nicht unbedingt Buchstaben sein.</p>
</blockquote>
<p>Hast du natürlich recht... Aber nimmst du da chars?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144040</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 13 Nov 2011 18:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 18:15:35 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>Seit wann codiert man Zustände in Buchstaben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Chars müssen nicht unbedingt Buchstaben sein.</p>
</blockquote>
<p>Hast du natürlich recht... Aber nimmst du da chars?</p>
</blockquote>
<p>Nein, würde ich komplett anders regeln. Aber wenns mir um Platzersparnis ginge und ich einen konformen C++11-Compiler hätte, würde ich ein enum auf (unsigned) char-Basis nehmen <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/2144047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144047</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 13 Nov 2011 18:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 18:41:46 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Aber wenns mir um Platzersparnis ginge und ich einen konformen C++11-Compiler hätte, würde ich ein enum auf (unsigned) char-Basis nehmen <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>
</blockquote>
<p>Das C++11-Feature <em>Strongly typed enumerations</em> hatte ich auch noch nicht zur Kenntnis genommen <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="🙂"
    /><br />
Falls es jemand nicht kennt: <a href="http://en.wikipedia.org/wiki/C%2B%2B11#Strongly_typed_enumerations" rel="nofollow">http://en.wikipedia.org/wiki/C%2B%2B11#Strongly_typed_enumerations</a></p>
<p>Danke für die Info pumuckl <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144065</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 13 Nov 2011 18:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Sun, 13 Nov 2011 20:15:08 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<blockquote>
<p>Aber mal eine andere Frage... Wofür brauch man ein threadsicheres char?</p>
</blockquote>
<p>Zb. um den Zustand eines Tasks zu markieren.</p>
</blockquote>
<p>Seit wann codiert man Zustände in Buchstaben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Also ich nehme für Zustände enums bzw. int <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Naja, aussagekräftige Buchstaben sind aber auch nicht umbedingt verkehrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144099</guid><dc:creator><![CDATA[Ethon__]]></dc:creator><pubDate>Sun, 13 Nov 2011 20:15:08 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Mon, 14 Nov 2011 10:44:38 GMT]]></title><description><![CDATA[<p>Mir geht es echt darum, dass verschiedene threads auf gloable Variablen zugreifen können. Den char hatte ich nur genommen, weil er 8 Bit groß ist und somit mein Schreib oder Lesezugriff ja am ehesten atomar sein müsste. Mein Frage ist nun wie ich diesen Schreib oder Lesezugriff threadsafe hinbekomme. Einen Mutex benutzen dürfte doch eigentlich nicht reichen, oder? Dann habe ich zwar gesichert, dass niemals Threads gleichzeitig das Object lesen oder schreiben, aber ich muss doch noch sicherstellen, dass die Veränderungen auch immer übernommen werden. Also das Object auch noch volatile machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144292</guid><dc:creator><![CDATA[threadter]]></dc:creator><pubDate>Mon, 14 Nov 2011 10:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Mon, 14 Nov 2011 10:45:45 GMT]]></title><description><![CDATA[<p>Das wird durch die Verwendung eines Mutex garantiert. Ich würde dennoch atomics nehmen, da die vermutlich günstiger sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144293</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 14 Nov 2011 10:45:45 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Mon, 14 Nov 2011 10:53:03 GMT]]></title><description><![CDATA[<p>Aber woher weiß der Mutex denn welche Variablen ich verändert haben und vorallem woher weiß ein anderer Thread, dass die Variable von außen verändert werden kann? Muss da nicht ein volatile verwendet werden?</p>
<p>Das gleiche gilt doch im Grunde für die atomics. Auch wenn all meine Zugriffe atomar sind müssen doch alle threads wissen, dass sie immer die Variable bei jedem check neu einlesen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144297</guid><dc:creator><![CDATA[threadter]]></dc:creator><pubDate>Mon, 14 Nov 2011 10:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Mon, 14 Nov 2011 10:57:31 GMT]]></title><description><![CDATA[<p>Andere Threads sehen deinen Wert doch nur nicht, wenn der Write Back (Zurückschreiben des Wertes in den Speicher) noch nicht stattgefunden hat. Bei atomics passiert dies direkt, wie das bei Mutexen ist, weiß ich nciht so genau. Aber ich weiß, dass es funktioniert (und nicht nur &quot;funktioniert&quot; sondern auch richtig ist so.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144299</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 14 Nov 2011 10:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Mon, 14 Nov 2011 15:20:24 GMT]]></title><description><![CDATA[<p>?</p>
<p>Kurze Aufklärung wie ein Mutex funktioniert: Wenn du eine Operation machen möchtest, die threadsicher sein muss, dann erzeugst du mit einer Betriebssystem-API (oder seit C++11 auch std::mutex) ein Mutex-Objekt, das sich alle Threads teilen. Das macht erstmal überhaupt nichts.<br />
Wenn du jetzt in den kritischen Bereich kommst, sperrst du den Mutex (OS-API bzw std::mutex::lock). Hat bereits ein anderer Thread den Mutex gelockt, wird blockiert und gewartet. Ab diesem Punkt verrichtest du deine Arbeit und gibst so schnell als möglich den Mutex wieder frei, damit andere Threads auch in diesem Bereich arbeiten können.</p>
<p>Die atomics werden warscheinlich als Fallback mit einem Mutex implementiert, aber praktisch jeder moderne Prozessor bietet einen Befehl zum atomaren lesen/schreiben von Werten. Dieser wird in der Regel genutzt und das Ganze ist verglichen mit einem Mutex höllisch schnell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144429</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Mon, 14 Nov 2011 15:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to C++ char variablen threadsafe? on Mon, 14 Nov 2011 22:47:00 GMT]]></title><description><![CDATA[<p>threadter schrieb:</p>
<blockquote>
<p>Das gleiche gilt doch im Grunde für die atomics. Auch wenn all meine Zugriffe atomar sind müssen doch alle threads wissen, dass sie immer die Variable bei jedem check neu einlesen müssen.</p>
</blockquote>
<p>Na dafür gibt es ja die acquire/release/... Semantik.<br />
Damit sagst du, was du gerne haben möchtest.<br />
Also ob du Änderungen anderer Threads sehen möchtest, oder aber deine Änderungen &quot;in den Speicher zurückschreiben&quot;, oder beides, oder gar nix oder...</p>
<p>PS: ich würde trotzdem empfehlen Mutexen zu verwenden. Weil die viel einfacher richtig zu verwenden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2144623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2144623</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 14 Nov 2011 22:47:00 GMT</pubDate></item></channel></rss>