<?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[Erweiterung des templates &amp;quot;Vector&amp;quot;]]></title><description><![CDATA[<p>Hi zusammen..</p>
<p>Ich bin ganz neu in der c++ Welt und wie soll ich sagen.. es gibt schon noch einige Unklarhiten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> Aktuell stehe ich vor dem Problem, dass ich eine Liste haben muss, in der ich Objekte vom Typ XY speichern kann. Grundsätzlich all das, was mir das Templat &quot;Vector&quot; zur Verfügung stellt. Allerdings muss der Zugriff auf die Liste mit einer CriticalSection oder einer Mutex synchronisiert werden. Gibt es eine Möglichkeit, das Template &quot;Vector&quot; mit meinen Anpassungen zu erweitern? Kann ich da einfach eine &quot;Ableitung&quot; machen und diese nach Lust und Laune meinen Wünschen anpassen oder.. sind die vorgegebenen Templates eher fix in der Funktionalität, die sie bieten?</p>
<p>Eine zweite Fragen, die sich stellen würde, wenn ich das template erweitern könnte, wäre folgende:</p>
<p>Die Liste wird üblicherweise gelesen und selten verändert. Für die synchronisierung wäre es also sinnvoll, wenn ich eine Art &quot;Multiple-Read, Single-Write&quot; machanismus verwenden könnte. Diesen habe ich bereits geschrieben aber.. sind diese Templates und das Verctor-Template im speziellen so geschrieben, dass man &quot;gleichzeitig&quot; reads ausführen kann, ohne dass diese exklusiv sind?</p>
<p>Naja, bin auf jeden Fall für jeden Hinweis dankbar, vielleicht bin ich ja auch ganz auf dem Holzweg..!?</p>
<p>Grüsse, Dominic</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209846/erweiterung-des-templates-quot-vector-quot</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 02:21:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209846.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Apr 2008 23:21:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erweiterung des templates &amp;quot;Vector&amp;quot; on Thu, 03 Apr 2008 23:21:58 GMT]]></title><description><![CDATA[<p>Hi zusammen..</p>
<p>Ich bin ganz neu in der c++ Welt und wie soll ich sagen.. es gibt schon noch einige Unklarhiten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> Aktuell stehe ich vor dem Problem, dass ich eine Liste haben muss, in der ich Objekte vom Typ XY speichern kann. Grundsätzlich all das, was mir das Templat &quot;Vector&quot; zur Verfügung stellt. Allerdings muss der Zugriff auf die Liste mit einer CriticalSection oder einer Mutex synchronisiert werden. Gibt es eine Möglichkeit, das Template &quot;Vector&quot; mit meinen Anpassungen zu erweitern? Kann ich da einfach eine &quot;Ableitung&quot; machen und diese nach Lust und Laune meinen Wünschen anpassen oder.. sind die vorgegebenen Templates eher fix in der Funktionalität, die sie bieten?</p>
<p>Eine zweite Fragen, die sich stellen würde, wenn ich das template erweitern könnte, wäre folgende:</p>
<p>Die Liste wird üblicherweise gelesen und selten verändert. Für die synchronisierung wäre es also sinnvoll, wenn ich eine Art &quot;Multiple-Read, Single-Write&quot; machanismus verwenden könnte. Diesen habe ich bereits geschrieben aber.. sind diese Templates und das Verctor-Template im speziellen so geschrieben, dass man &quot;gleichzeitig&quot; reads ausführen kann, ohne dass diese exklusiv sind?</p>
<p>Naja, bin auf jeden Fall für jeden Hinweis dankbar, vielleicht bin ich ja auch ganz auf dem Holzweg..!?</p>
<p>Grüsse, Dominic</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486125</guid><dc:creator><![CDATA[Bayo]]></dc:creator><pubDate>Thu, 03 Apr 2008 23:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to Erweiterung des templates &amp;quot;Vector&amp;quot; on Thu, 03 Apr 2008 23:27:48 GMT]]></title><description><![CDATA[<p>meistens ist einen container zu synchronisieren eher eine schlechte idee. meistens will man lieber den zugriff synchronisieren.</p>
<p>wenn man aber den container synchronisieren will - dann macht man es idR ueber einen adapter. vererbung ist hier nicht so ideal - lieber den vector als member nehmen und die notwendigen methoden anbieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486128</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 03 Apr 2008 23:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Erweiterung des templates &amp;quot;Vector&amp;quot; on Thu, 03 Apr 2008 23:36:19 GMT]]></title><description><![CDATA[<p>Ich würde nicht von vector ableiten, da die Klasse nicht als Basisklasse entworfen wurde (kein virtueller Dtor etc.)</p>
<p>Stattdessen wäre wohl eine Aggregation oder Komposition sinnvoller. Also eine Klasse, die einen Vektor kapselt und die synchronisierten Methoden anbietet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486133</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 03 Apr 2008 23:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Erweiterung des templates &amp;quot;Vector&amp;quot; on Fri, 04 Apr 2008 08:29:47 GMT]]></title><description><![CDATA[<p>okey alles klar, nicht ableiten aber eine Aggregation, das ist auch ganz okey <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="🙂"
    /> Thanx! Jetzt hätte ich noch ein grundsätzliche Frage zu STL und multithreading .. Kann man die STL-Klassen ein einer multithreaded Umgebung nutzen oder sollte man das nicht machen? Ich finde im Internet einiges zu diesem Thema aber viele widersprüchliche Aussagen. Beinhalten die Objekte, die man sharen will (z.B. ein Vektor) irgendwelche Statusinformationen, die sich bei concurrent-reads / writes im Wege stehen? Natürlich werden die reads / writes miteinander synchronisiert aber vielleicht gibt es irgendwelche status-informationen, die über einen solchen Request hinweg existieren..? Und ist es vielleicht sogar möglich keine exklusiven reads zu machen (das würde die performance vermutlich stark verbessern, da ich viele reads und wenig writes haben werde)? Und dann gibts es da nocht die Sachen mit dem caching. so wie ich verstanden habe, sollte man in c das schlüsselwort volatile vor eine variable stellen, die von mehreren threads aus benützt wird, weil es sonst möglich ist, dass ein thread einen alten Wert verwendet, da der neue noch nicht ins memory geschrieben wurde und noch irgendwo im cache herumligt. Wird das in der STL gemacht oder ist das irgendwie gar nicht nötig..?</p>
<p>Ja ihr seht, mir ist da noch so einiges unklar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> Vielleicht kann mir jemand, der Erfahrungen mit multithreaded systemen hat den einen oder anderen Hinweis geben.</p>
<p>Die erste und grundsätzliche Frage, vor der ich stehe ist: kann man die funktionen und klassen der stl in einer multithreaded umgebung nutzen oder schreibt man vielleicht die sachen, die man braucht, doch lieber selbst und dann sind sie auch thread-safe.</p>
<p>Wie macht ihr das in euren multithreaded applikationen? Bei mir geht es konkret um einen tcp-server, der x clients bedienen soll.</p>
<p>wow, soviel wollte ich ja gar nicht schreiben <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="🙂"
    /> hoffentlich versteht ihr etwa, was ich meine ..!?</p>
<p>Grüsse, Dominic</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486253</guid><dc:creator><![CDATA[bayo]]></dc:creator><pubDate>Fri, 04 Apr 2008 08:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Erweiterung des templates &amp;quot;Vector&amp;quot; on Fri, 04 Apr 2008 09:35:08 GMT]]></title><description><![CDATA[<p>Da die C++-Norm keine Threads kennt, ist logischerweise die Std-Lib nicht Threadsafe. (und unterlasst doch mal bitte endlich STL im Sinne von Std-Lib!)</p>
<p>Mit der nächsten C++-Norm (kommt spätestens 2010) wird es auch Threadfähigkeiten geben, und dann wird evtl. die Std-Lib Threadsafe sein (für eine konkrete Aussage sollte man aber in den aktuellen Working Draft der nächsten C++-Norm).</p>
<p>Wenn du die Container in einer Multithread-Umgebung einsetzen willst, sollte sich das Problem doch von alleine lösen, in dem man sowieso seine Container kapselt. Oder darf jeder auf deine Container zugreifen? Ich mache es meistens so:</p>
<pre><code class="language-cpp">// Pseudocode
class A
{
     std::vector&lt;Bla&gt; blas;
public:
     void push_back(Bla &amp;b)
     {
          blas.push_back(b);
     }
};
</code></pre>
<p>So, und in deiner push_back kannst du ja ein Mutex setzen:</p>
<pre><code class="language-cpp">// Pseudocode
#include &lt;boost/thread/mutex.hpp&gt;
#include &lt;boost/thread/thread.hpp&gt;

class A
{
     boost::mutex mutex;
     std::vector&lt;Bla&gt; blas;
public:
     void push_back(Bla &amp;b)
     {
        boost::mutex::scoped_lock scoped_lock(mutex); 
        blas.push_back(b);
     }
};
</code></pre>
<p>Und schon ist push_back synchron.</p>
<p>Wenn einem sowas nicht gefällt, kann man sich nach einer anderen fertigen Library umschauen, die vielleich Threadsafe ist. Dann muß man zwar diese Library &quot;neu&quot; lernen, aber so ist das halt. Es gibt von SGI eine STL-Implementierung die Threadsafe ist. Einfach mal auf deren Homepage gehen. Evtl ist auch POCO Library Threadsafe. Mußt du mal selber nachschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486295</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 04 Apr 2008 09:35:08 GMT</pubDate></item></channel></rss>