<?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[Threads und Zugriff ohne sync]]></title><description><![CDATA[<p>Ich habe eine Ringbuffer Klasse nach dem klassischen Consumer/Producer Prinzip geschreiben. Soweit OK.<br />
Da Consumer und Producer oder pRead und pWrite in zwei unterschiedlichen Thread agieren muß ich einige Variablen synchronisieren. Auch OK.</p>
<p>Allerdings:<br />
Beispiel eine Funktion zum weiterschieben der Lesemarke.</p>
<pre><code class="language-cpp">void moveReadMark(int n)
{
  if(pWrite &gt; pReadMark)
  {
   int s = (pWrite - pReadMark);
   if(n &gt; s)
   {
     pReadMark+= s
   }
   ...
  }
}
</code></pre>
<p>Es stört nicht wenn pWrite bei if und bei der Berechnung unterschiedliche sind. Das ist nicht das Problem.</p>
<p>Wäre aber ein Threadwechsel bei if(pWrite &gt; pReadMark) überhaupt möglich.<br />
Also so, das nur ein Teil der Addresse auf die pW zeigt ausgelesen wird und nachher Müll raus kommt? Oder komme ich tatsächlich ohne sync aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156509/threads-und-zugriff-ohne-sync</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 09:35:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156509.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Aug 2006 10:52:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads und Zugriff ohne sync on Thu, 17 Aug 2006 10:52:16 GMT]]></title><description><![CDATA[<p>Ich habe eine Ringbuffer Klasse nach dem klassischen Consumer/Producer Prinzip geschreiben. Soweit OK.<br />
Da Consumer und Producer oder pRead und pWrite in zwei unterschiedlichen Thread agieren muß ich einige Variablen synchronisieren. Auch OK.</p>
<p>Allerdings:<br />
Beispiel eine Funktion zum weiterschieben der Lesemarke.</p>
<pre><code class="language-cpp">void moveReadMark(int n)
{
  if(pWrite &gt; pReadMark)
  {
   int s = (pWrite - pReadMark);
   if(n &gt; s)
   {
     pReadMark+= s
   }
   ...
  }
}
</code></pre>
<p>Es stört nicht wenn pWrite bei if und bei der Berechnung unterschiedliche sind. Das ist nicht das Problem.</p>
<p>Wäre aber ein Threadwechsel bei if(pWrite &gt; pReadMark) überhaupt möglich.<br />
Also so, das nur ein Teil der Addresse auf die pW zeigt ausgelesen wird und nachher Müll raus kommt? Oder komme ich tatsächlich ohne sync aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119066</guid><dc:creator><![CDATA[idefix]]></dc:creator><pubDate>Thu, 17 Aug 2006 10:52:16 GMT</pubDate></item></channel></rss>