<?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[Blubb blubb zu thread safety in der MSDN]]></title><description><![CDATA[<p><a href="http://msdn2.microsoft.com/en-us/library/system.data.dataset.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/system.data.dataset.aspx</a></p>
<p>Wie würdet ihr die folgende Aussage verstehen:</p>
<blockquote>
<p>This type is safe for multithreaded read operations. You must synchronize any write operations.</p>
</blockquote>
<p>Heißt das<br />
(1) Während dem Lesen wird nichts an der Datenstruktur so verändert, dass nicht mehrere Threads lesen könnten; heißt also n reader, 0 writer gleichzeitig bzw. 1 writer gleichzeitig<br />
(2) Während 1 Thread schreibt dürfen auch andere Threads gleichzeitig im DataSet lesen; heißt also n reader, 0-1 writer gleichzeitig</p>
<p>Ich tendiere ja eigentlich zu (1), weil es mehr dem Verhalten entspricht, mit dem ich regelmäßig Umgang habe. (2) könnte sowieso überhaupt nur schwer realisiert werden (allerdings nicht unmöglich), wäre aber in meinem Fall gerade furchtbar praktisch.</p>
<p>Die Formulierung finde ich aber komisch und verstehe sie schon fast so, dass man immer bedenkenlos lesen kann. Verstehe nur ich das so? Was meint ihr jetzt, was eher zutrifft?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174475/blubb-blubb-zu-thread-safety-in-der-msdn</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 22:03:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174475.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Feb 2007 18:01:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Tue, 27 Feb 2007 18:01:41 GMT]]></title><description><![CDATA[<p><a href="http://msdn2.microsoft.com/en-us/library/system.data.dataset.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/system.data.dataset.aspx</a></p>
<p>Wie würdet ihr die folgende Aussage verstehen:</p>
<blockquote>
<p>This type is safe for multithreaded read operations. You must synchronize any write operations.</p>
</blockquote>
<p>Heißt das<br />
(1) Während dem Lesen wird nichts an der Datenstruktur so verändert, dass nicht mehrere Threads lesen könnten; heißt also n reader, 0 writer gleichzeitig bzw. 1 writer gleichzeitig<br />
(2) Während 1 Thread schreibt dürfen auch andere Threads gleichzeitig im DataSet lesen; heißt also n reader, 0-1 writer gleichzeitig</p>
<p>Ich tendiere ja eigentlich zu (1), weil es mehr dem Verhalten entspricht, mit dem ich regelmäßig Umgang habe. (2) könnte sowieso überhaupt nur schwer realisiert werden (allerdings nicht unmöglich), wäre aber in meinem Fall gerade furchtbar praktisch.</p>
<p>Die Formulierung finde ich aber komisch und verstehe sie schon fast so, dass man immer bedenkenlos lesen kann. Verstehe nur ich das so? Was meint ihr jetzt, was eher zutrifft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236340</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 27 Feb 2007 18:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Tue, 27 Feb 2007 18:08:48 GMT]]></title><description><![CDATA[<p>wenn ich im Linux-Kernel-Handbuch das richtig verstanden habe könnte das folgendermasen aussehen:</p>
<p>(1) Während ein Writer schreibt dürfen keine Reader zugreifen, der Writer wartet bis alle Reader fertig sind oder<br />
(2) Der Writer schreibt und die Reader prüfen ob zwischen begin und ende des Zugriffs ein Writer zugegriffen hat und wiederholen gegebenfals den Zugriff.</p>
<p>Dürfte auch auf Windows übertragbar sein, läuft allerdings beides effektiv auf dein (1) hinaus, auch wenn mein (2) tatsächlich anders läuft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236346</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Tue, 27 Feb 2007 18:08:48 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Tue, 27 Feb 2007 19:08:52 GMT]]></title><description><![CDATA[<p>Gut, dein (2) könnte eine weitere Möglichkeit sein, wie das implementiert ist. Allerdings hab ich ehrlich gesagt schon meine Zweifel, ob das jetzt vom Linux Kernel - Handbuch übertragbar ist und schlussfolgern lässt, was es denn jetzt überhaupt ist. Es ist nämlich auch nicht die Frage, wie es denn jetzt in Windows ist, sonder wie konkret die Klasse DataSet implementiert ist und daran wäre ich jetzt interessiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236389</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 27 Feb 2007 19:08:52 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Tue, 27 Feb 2007 20:43:37 GMT]]></title><description><![CDATA[<p>Die Muster der Zugriffssicherung beim Parallel Procesising sind eigentlich ziemlich einheitlich, auch wenn die genaue Anwendung der Techniken deutlich variiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236433</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Tue, 27 Feb 2007 20:43:37 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Tue, 27 Feb 2007 23:36:51 GMT]]></title><description><![CDATA[<p>Die Formulierung ist äusserst unglücklich.</p>
<p>Ich gehe aber davon aus dass &quot;N reader ODER 1 writer&quot; gemeint ist. Sollte in der Tat &quot;N reader + 1 writer&quot; gemeint sein ist die Formulierung doppelt unglücklich, da ein wichtiges Feature quasi unterschlagen wird.</p>
<p>@Optimizer: taucht diese Formulierung öfters auf, oder nur bei dieser einen Klasse? Unabhängig davon könntest du aber MS anschreiben, dass die das fixen sollen bzw. klarstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236497</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 27 Feb 2007 23:36:51 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Wed, 28 Feb 2007 08:48:57 GMT]]></title><description><![CDATA[<p>Sobald 1 Writer (&quot;any write operations&quot;, d.h. &gt;= 1) zugreift, muß man synchronisieren, d.h. braucht einen Interlock mit den Readern und anderen Writern. Solange es nur n Reader sind, ist kein Interlock notwendig.</p>
<p>Das steht doch da? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Variante (2) wird von &quot;any write operations&quot; verworfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236606</guid><dc:creator><![CDATA[Marc++us]]></dc:creator><pubDate>Wed, 28 Feb 2007 08:48:57 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Wed, 28 Feb 2007 09:44:18 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>@Optimizer: taucht diese Formulierung öfters auf, oder nur bei dieser einen Klasse? Unabhängig davon könntest du aber MS anschreiben, dass die das fixen sollen bzw. klarstellen.</p>
</blockquote>
<p>Ja, is einer von den möglichen Standard-Sätzen die sie da verwenden. Ich konnte aber keine zusammenfassende Seite über diese Sätze finden.</p>
<p>Marc++us schrieb:</p>
<blockquote>
<p>Sobald 1 Writer (&quot;any write operations&quot;, d.h. &gt;= 1) zugreift, muß man synchronisieren, d.h. braucht einen Interlock mit den Readern und anderen Writern. Solange es nur n Reader sind, ist kein Interlock notwendig.</p>
<p>Das steht doch da? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Variante (2) wird von &quot;any write operations&quot; verworfen.</p>
</blockquote>
<p>Also du vermutest gleichzeitig lesen und schreiben geht nicht. Und du vermutest es im speziellen deshalb, nicht weil es häufig einfach so ist, sondern weil du genau diesen Text so verstehst, oder? Alles klar, das wollte ich wissen. <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>Ich glaube es inzwischen auch, nicht nur weil es das offensichtlichere ist, sondern weil ich seltsame internal-index-corrupted Fehler habe. Ich hab mir gedacht, probieren geht über studieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> <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>
<p>Aber ich finde die Formulierung nicht genauso klar. So ist das Verhalten ja dann identisch mit der List&lt;T&gt;, da steht aber:</p>
<blockquote>
<p>Public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.</p>
<p>A List can support multiple readers concurrently, as long as the collection is not modified.</p>
</blockquote>
<p>Was ich mal wirklich eindeutig finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236632</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Feb 2007 09:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Wed, 28 Feb 2007 10:43:07 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<blockquote>
<p>A List (Type) can support multiple readers concurrently, as long as the collection is not modified.</p>
</blockquote>
<p>&lt;=&gt;</p>
<blockquote>
<p>This type is safe for multithreaded read operations. You must synchronize any write operations.</p>
</blockquote>
<p>Oder so:</p>
<p>can support &lt;=&gt; is safe<br />
concurrently &lt;=&gt; multithreaded<br />
multiple readers &lt;=&gt; read operation<strong>s</strong><br />
as long as not modified &lt;=&gt; when write operations must do something (synchronize)<br />
modified &lt;=&gt; write operation</p>
<p>Entweder fehlt mir die Phantasie, oder ich lese das identisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236681</guid><dc:creator><![CDATA[Marc++us]]></dc:creator><pubDate>Wed, 28 Feb 2007 10:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Wed, 28 Feb 2007 20:12:57 GMT]]></title><description><![CDATA[<p>Die Formulierung ist nicht eindeutig, da die Möglichkeit dass evtl. jmd lesen UND schreiben möchte nicht berücksichtigt wird -- bzw. es wird keine Aussage darüber getroffen was dann zu tun ist. Mit der nötigen Erfahrung lässt sich schnell erraten was wohl gemeint ist, rein aus sprachlicher Ebene ist das aber so unklar wie nur geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237061</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 28 Feb 2007 20:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Thu, 01 Mar 2007 00:32:37 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Die Formulierung ist nicht eindeutig, da die Möglichkeit dass evtl. jmd lesen UND schreiben möchte nicht berücksichtigt wird</p>
</blockquote>
<p>Doch. &quot;any write operations&quot; bedeutet &gt;= 1. Damit wird ausgesagt, daß man synchronisieren muß, sobald mindestens 1 Write-Operation stattfindet, egal ob parallel zu anderen Write-Operations oder zu Read-Operations.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237182</guid><dc:creator><![CDATA[Marc++us]]></dc:creator><pubDate>Thu, 01 Mar 2007 00:32:37 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Thu, 01 Mar 2007 12:49:12 GMT]]></title><description><![CDATA[<p>Marc++us schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Die Formulierung ist nicht eindeutig, da die Möglichkeit dass evtl. jmd lesen UND schreiben möchte nicht berücksichtigt wird</p>
</blockquote>
<p>Doch. &quot;any write operations&quot; bedeutet &gt;= 1. Damit wird ausgesagt, daß man synchronisieren muß, sobald mindestens 1 Write-Operation stattfindet, egal ob parallel zu anderen Write-Operations oder zu Read-Operations.</p>
</blockquote>
<p>Nein, das wird damit nicht ausgesagt. Ich weiss nicht wie du das da hineindeuten willst, es steht aber auf jeden Fall nicht da. Was du schreibst würde zutreffen wenn da &quot;you must synchronize read and write operations if there can be any write operations&quot; stehen würde. Da steht aber nur &quot;you must synchronize write operations&quot; - also ich muss Schreibzugriffe synchronisieren. Nirgends steht aber dass ich Lesezugriffe auch mit Schreibzugriffen synchronisieren muss. Und sag jetzt bitte nicht &quot;das ist logisch&quot; - klar isses logisch wenn man weiss wie sowas normalerweise geht, aber es steht eben nicht dort.</p>
<p>Davon abgesehen ist jede Formulierung die nicht für einen Grossteil aller potentiellen Leser eindeutig verständlich ist schlecht, im Sinn von ungünstig. Ganz egal ob sie nun technisch gesehen korrekt ist oder nicht (und ich bestreite immer noch dass sei das ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237413</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 01 Mar 2007 12:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Thu, 01 Mar 2007 13:56:14 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Marc++us schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Die Formulierung ist nicht eindeutig, da die Möglichkeit dass evtl. jmd lesen UND schreiben möchte nicht berücksichtigt wird</p>
</blockquote>
<p>Doch. &quot;any write operations&quot; bedeutet &gt;= 1. Damit wird ausgesagt, daß man synchronisieren muß, sobald mindestens 1 Write-Operation stattfindet, egal ob parallel zu anderen Write-Operations oder zu Read-Operations.</p>
</blockquote>
<p>Nein, das wird damit nicht ausgesagt. Ich weiss nicht wie du das da hineindeuten willst, es steht aber auf jeden Fall nicht da. Was du schreibst würde zutreffen wenn da &quot;you must synchronize read and write operations if there can be any write operations&quot; stehen würde. Da steht aber nur &quot;you must synchronize write operations&quot; - also ich muss Schreibzugriffe synchronisieren. Nirgends steht aber dass ich Lesezugriffe auch mit Schreibzugriffen synchronisieren muss.</p>
</blockquote>
<p>Ich verstehe es genauso wie Marc++us und finde auch, dass die Aussage recht eindeutig ist.<br />
&quot;any write operations&quot; ist eine generalisierte Aussage und schließt alles ein, wo mindestens ein write dabei ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237478</guid><dc:creator><![CDATA[byto]]></dc:creator><pubDate>Thu, 01 Mar 2007 13:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Fri, 02 Mar 2007 11:02:32 GMT]]></title><description><![CDATA[<p>Die Frage ist nicht wie man &quot;any write operations&quot; versteht, sondern es ist eine Frage der Grammatik.</p>
<p>&quot;you must synchronize any write operations&quot; -&gt; &quot;synchronize write operations&quot; - das &quot;synchronize&quot; bezieht sich NUR auf &quot;write operations&quot;. Dieser Satz besagt NICHT dass ich auch &quot;read operations&quot; &quot;synchronize&quot;-en muss.</p>
<p>Alleine das die Frage hier gestellt wurde beweist ja wohl dass die Formulierung NICHT eindeutig bzw. klar verständlich ist.</p>
<p>Weiters ist das Wort &quot;synchronize&quot; sowieso etwas schwammig - &quot;synchronize&quot; kann vieles heissen. Es könnte z.B. genauso gemeint sein dass alle Zugriffe gleichzeitig erfolgen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237968</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 02 Mar 2007 11:02:32 GMT</pubDate></item><item><title><![CDATA[Reply to Blubb blubb zu thread safety in der MSDN on Fri, 02 Mar 2007 11:32:16 GMT]]></title><description><![CDATA[<p>Das Wort &quot;any&quot; kannste nicht einfach weglassen. Diese Wort verstärkt doch gerade, dass *jede* Schreiboperation synchronisiert werden muß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237989</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 02 Mar 2007 11:32:16 GMT</pubDate></item></channel></rss>