<?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[Schneller&#x2F;einfacher Synchronisierungsmechanismus]]></title><description><![CDATA[<p>Ich möchte eine Bibliothek die ich gerade entwerfe auch für multi-threading Anwendungen auslegen, es gibt prinzipiell nur sehr wenige Strukturen die global benutzt werden, welche ich natürlich nur synchronisiert ansprechen darf.<br />
Jetzt bin ich auf der Suche nach einem schnellen einfachen Synchronisierungsmenchanismus.<br />
Bis jetzt gibt es nur eine globale Datenstruktur welche normalerweise nur einmal zu Begin initialisiert wird und anschließend nur noch gelesen wird, d.h. es wird nur äußerst selten darauf geschrieben, das Lesen ist immer unproblematisch. Das schreiben selbst geht sehr schnell, d.h. es ist kein aufwändiger Mechanismus notwendig, der wartende Thread muss sich nicht zwingend schlafen legen.</p>
<p>Was gibt es da?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220149/schneller-einfacher-synchronisierungsmechanismus</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 22:35:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220149.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Aug 2008 13:07:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 13:07:30 GMT]]></title><description><![CDATA[<p>Ich möchte eine Bibliothek die ich gerade entwerfe auch für multi-threading Anwendungen auslegen, es gibt prinzipiell nur sehr wenige Strukturen die global benutzt werden, welche ich natürlich nur synchronisiert ansprechen darf.<br />
Jetzt bin ich auf der Suche nach einem schnellen einfachen Synchronisierungsmenchanismus.<br />
Bis jetzt gibt es nur eine globale Datenstruktur welche normalerweise nur einmal zu Begin initialisiert wird und anschließend nur noch gelesen wird, d.h. es wird nur äußerst selten darauf geschrieben, das Lesen ist immer unproblematisch. Das schreiben selbst geht sehr schnell, d.h. es ist kein aufwändiger Mechanismus notwendig, der wartende Thread muss sich nicht zwingend schlafen legen.</p>
<p>Was gibt es da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563330</guid><dc:creator><![CDATA[Windows Progger]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:07:30 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 13:22:14 GMT]]></title><description><![CDATA[<p>Multiple Read, Single Write.<br />
In der Windows API für Vista gibts das schon pfannenfertig, sonst selber machen.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563355</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:22:14 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 13:42:08 GMT]]></title><description><![CDATA[<p>Hast du da etwas mehr Informationen für mich, ich kenn mich da nicht so aus, zumindest mit den Möglichkeiten unter Windows. Ich habe zwar mal in der <a href="http://msdn.microsoft.com/en-us/library/ms686360(VS.85).aspx" rel="nofollow">MSDN</a> geschaut, aber ich kann überhaupt nicht abschätzen was sich da für meine Zwecke anbietet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563378</guid><dc:creator><![CDATA[Windows Progger]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 13:50:40 GMT]]></title><description><![CDATA[<p><a href="http://www.codeproject.com/KB/threads/ReaderWriterLock.aspx" rel="nofollow">http://www.codeproject.com/KB/threads/ReaderWriterLock.aspx</a><br />
<a href="http://www.codeproject.com/KB/threads/ReadWriteLock.aspx" rel="nofollow">http://www.codeproject.com/KB/threads/ReadWriteLock.aspx</a><br />
<a href="http://www.ddj.com/cpp/184401515" rel="nofollow">http://www.ddj.com/cpp/184401515</a></p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563386</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 14:42:39 GMT]]></title><description><![CDATA[<p>Guckst Du auch: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-186523-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-186523-and-highlight-is-.html</a></p>
<p>Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563430</guid><dc:creator><![CDATA[Mmacher]]></dc:creator><pubDate>Tue, 12 Aug 2008 14:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 15:41:28 GMT]]></title><description><![CDATA[<p>Danke für die Links werde sie bei Gelegenheit ausführlicher studieren, im Moment scheint das &quot;gängige&quot; Reader/Writer-Pattern genau meinen Wünschen zu entsprechen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563467</guid><dc:creator><![CDATA[Windows Progger]]></dc:creator><pubDate>Tue, 12 Aug 2008 15:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 16:11:13 GMT]]></title><description><![CDATA[<p>Wenn das Lesen recht schnell geht dann nimm einfach eine CRITICAL_SECTION. ReaderWriterLock zahlt sich da IMO nicht aus.</p>
<p>Wenn das Lesen länger dauern kann, es also vorteilhaft wäre wenn mehrer Threads gleichzeitig lesen könnten, dann ja, ReaderWriterLock, bloss musst du dir sowas unter Windows selbst stricken (wer verwendet schon Vista?).<br />
Oder du greifst auf eine fertige Implementierung wie die in Boost.Thread zurück (ab Boost Version 1.35 bitte, die Implementierung davor ist IIRC verbuggt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563491</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Aug 2008 16:11:13 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Tue, 12 Aug 2008 16:43:50 GMT]]></title><description><![CDATA[<p>Möchte mich nicht ausschließlich auf Vista festlegen, also scheidet die fertige Variante aus.<br />
Wie lange das Lesen dauert kann ich nicht sagen, da die Struktur Funktionszeiger enthält welche vom User bereit gestellt werden, daher sollten mehrere Threads in der Lage sein diese Struktur zu lesen (dass die Funktionen in der Struktur reentrant und threadsafe sind ist Sache des Users).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563523</guid><dc:creator><![CDATA[Windows Progger]]></dc:creator><pubDate>Tue, 12 Aug 2008 16:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schneller&#x2F;einfacher Synchronisierungsmechanismus on Wed, 13 Aug 2008 20:45:04 GMT]]></title><description><![CDATA[<p>Dann guck dir mal die 1.35 Boost an.<br />
BTW: bist du sicher dass es OK ist Locks zu halten während du diese Callbacks aufrufst? Oft ist das problematisch...</p>
<p>Eine Alternative wären so ne Art &quot;Connection-Points&quot;, d.h. du lässt dir vom User ein Interface geben mit intrusive Reference-Counting (ala COM). Dann machst du z.B. einfach &quot;lock -&gt; interface-pointer holen -&gt; addref aufs interface -&gt; unlock -&gt; call interface -&gt; release aufs interface&quot;. Dann musst du den Lock nicht halten während du die Callback Funktion ausführst, und die Zeit wird sehr kurz, wodurch du wieder einfache Mutexen (z.B. eben CRITICAL_SECTION) verwenden könntest.</p>
<p>p.S.: natürlich ist das &quot;addref aufs interface&quot; strenggenommen auch ein Callback zum User der gemacht wird während du ein Lock hältst. Lässt sich allerdings nicht vermeiden, und bei einer einfachen Funktion wie addref kann man denke ich guten gewissens vorschreiben dass der User selbst keine Locks holen darf (um eben Deadlocks auszuschliessen). Bzw. nur Locks die dahingehend &quot;unproblematisch&quot; sind, d.h. die nie gehalten werden während der Client deinen Code aufruft. Und man kann da denke ich auch verlangen dass die Funktion sehr schnell zurückkommt, denn mehr als ein InterlockedIncrement bzw. InterlockedCompareExchange ist da normalerweise nicht nötig um so eine addref Funktion zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1564247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1564247</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 13 Aug 2008 20:45:04 GMT</pubDate></item></channel></rss>