<?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[vector Threadsave read&#x2F;write]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe ein Datarecorder.. dieser läuft in einem eigenen Thread und fügt in einem best. Intervall datensätze an einen/mehrere std::vectoren. Bei jedem Iternvall schickt der Thread eine event &quot;Neue Datensatz&quot; an ein fenster.<br />
In dem Fenster ist ein diagramm, welches ein kurve zeichnen soll anhand der Datenvectoren. vector zeit + vector dataX = eine curve.</p>
<p>Über das event forder ich das fenster bzw. das diagramm auf eine kurve aus den akturellen Daten zu zeichnen. Aber während es noch zeichnt, und es länger dauern würde evtl. und der thread schon erneut einen datensatz anfügt , müsst es ja ein crash geben oder?</p>
<p>Wie würded ihr das am beseten syncroniesren? Das diagram macht sich keine copy der daten, es hat einen zeiger auf die aufzeichnungdaten mit jeweils 2 iteratoren start/ende Range auf den vector.</p>
<p>Wenn das diagramm den gesamten vector zeichnet und zur gleichen zeit fügt der thread ein element hinzu könnte es ja ein progarmm geben. da der vector ja evlt. durch das anfügen eines neuen elements erst umkopiert werden muss, und so das diagramm nich lesen kann.</p>
<p>Wäre es sinnvoller es mit einer liste zu machen? weil ich da ja theoretisch problemmos ein element anfügen kann ohne das die davorliegenden element /iteratoren zu beeinflussen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214961/vector-threadsave-read-write</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 23:33:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214961.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jun 2008 03:21:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 03:35:08 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe ein Datarecorder.. dieser läuft in einem eigenen Thread und fügt in einem best. Intervall datensätze an einen/mehrere std::vectoren. Bei jedem Iternvall schickt der Thread eine event &quot;Neue Datensatz&quot; an ein fenster.<br />
In dem Fenster ist ein diagramm, welches ein kurve zeichnen soll anhand der Datenvectoren. vector zeit + vector dataX = eine curve.</p>
<p>Über das event forder ich das fenster bzw. das diagramm auf eine kurve aus den akturellen Daten zu zeichnen. Aber während es noch zeichnt, und es länger dauern würde evtl. und der thread schon erneut einen datensatz anfügt , müsst es ja ein crash geben oder?</p>
<p>Wie würded ihr das am beseten syncroniesren? Das diagram macht sich keine copy der daten, es hat einen zeiger auf die aufzeichnungdaten mit jeweils 2 iteratoren start/ende Range auf den vector.</p>
<p>Wenn das diagramm den gesamten vector zeichnet und zur gleichen zeit fügt der thread ein element hinzu könnte es ja ein progarmm geben. da der vector ja evlt. durch das anfügen eines neuen elements erst umkopiert werden muss, und so das diagramm nich lesen kann.</p>
<p>Wäre es sinnvoller es mit einer liste zu machen? weil ich da ja theoretisch problemmos ein element anfügen kann ohne das die davorliegenden element /iteratoren zu beeinflussen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522890</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 03:35:08 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 08:12:43 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Hallo Leute,</p>
<p>ich habe ein Datarecorder.. dieser läuft in einem eigenen Thread und fügt in einem best. Intervall datensätze an einen/mehrere std::vectoren. Bei jedem Iternvall schickt der Thread eine event &quot;Neue Datensatz&quot; an ein fenster.<br />
In dem Fenster ist ein diagramm, welches ein kurve zeichnen soll anhand der Datenvectoren. vector zeit + vector dataX = eine curve.</p>
</blockquote>
<p>Heisst &quot;Event&quot; in diesem Kontext eine Windows-Event? Welche Plattform benutzt Du? Welche Thread API benutzt Du?</p>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Über das event forder ich das fenster bzw. das diagramm auf eine kurve aus den akturellen Daten zu zeichnen. Aber während es noch zeichnt, und es länger dauern würde evtl. und der thread schon erneut einen datensatz anfügt , müsst es ja ein crash geben oder?</p>
</blockquote>
<p>Wenn was länger dauern würde? Wenn das Zeichnen länger dauert als das Lesen?</p>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Wie würded ihr das am beseten syncroniesren? Das diagram macht sich keine copy der daten, es hat einen zeiger auf die aufzeichnungdaten mit jeweils 2 iteratoren start/ende Range auf den vector.</p>
</blockquote>
<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>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Wenn das diagramm den gesamten vector zeichnet und zur gleichen zeit fügt der thread ein element hinzu könnte es ja ein progarmm geben. da der vector ja evlt. durch das anfügen eines neuen elements erst umkopiert werden muss, und so das diagramm nich lesen kann.</p>
</blockquote>
<p>Wenn was passiert, kann es <em>was</em> geben? Ein Programm? Ein Problem? Muss der Vektor das Diagramm lesen?</p>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Wäre es sinnvoller es mit einer liste zu machen? weil ich da ja theoretisch problemmos ein element anfügen kann ohne das die davorliegenden element /iteratoren zu beeinflussen?</p>
</blockquote>
<p>Sinnvoll wäre hier eine Queue. Die STL Queue ist aber nicht zwangsläufig Threadsafe ( die Wahrscheinlichkeit, dass sie es nicht ist, ist sogar ziemlich groß). Du solltest Dir also vielleicht eine eigene Klasse zur Entkopplung von Producer und Consumer bauen bzw. einen passenden STL-Container Threadsafe kapseln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522975</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 08:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 08:41:35 GMT]]></title><description><![CDATA[<p>Hi sorry wegen meinem deutsch:) Mit Event meine ich Window Message plattform Windows WinAPI <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>Ja es könnte je nach anzahl der Daten länger dauern das Diagramm zu zeichnen als einen datensatz hinzuzufügen:)</p>
<p>habe mir überlegt den Aufzeichnungs kontainer ungefähr so aufzubauen:</p>
<pre><code class="language-cpp">class DataRecording{
  Mutex mx;

std::list&lt;dat&gt; m_DATA;

 void addData(...){
    Lock(mx);

    m_DATA.push_back(....);
 }

 std::list&lt;dat&gt;::iterator GetLastRecord(){
    Lock(mx);
    return m_DATA.end();
 }
};
</code></pre>
<p>Thread Ruft dann die addDATA funktion auf, und meine Diagrmm ruft<br />
GetLastRecord auf... das Diagramm darf ja jetzt die Daten bis zumletzen Record lesen ohne , und der thread derweil einen neuen anfügen...</p>
<p>Thread:</p>
<pre><code class="language-cpp">ThreadLoop(){

obj.addData();
PostMessage(WM_NEWDATA);
Sleep(1000);
}
</code></pre>
<p>Diagrammfenster:</p>
<pre><code class="language-cpp">OnNewData(..){

   GetLastRecord();
//Diagramm zeichnen
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1522993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522993</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 08:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 08:48:29 GMT]]></title><description><![CDATA[<p>Würde ich mich nicht drauf verlassen... Ist es ausgeschlossen, dass beim Hinzufügen neuer Datensäte, die bestehenden Datensätze in einen neuen Speicherbereich kopiert werden müssen (ich weiss nicht wie vector das handhabt)?</p>
<p>Dem Thread würde ich einen internen Puffer spendieren und TryLock() statt Lock() verwenden. Wenn nicht gesperrt werden kann, schreibst Du die Daten, bis zum nächsten Zyklus, einfach in den internen Puffer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523005</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 05 Jun 2008 08:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 08:56:03 GMT]]></title><description><![CDATA[<p>naja während das Fenster zeichnet, und der Thread fügt einen neuen datensatz hinzu<br />
muss ja nicht direkt wieder neu gezeichnet werden.. dann brauch ich da keinen puffer...</p>
<p>auserdem kann das Fenster ja asyncron zeichnen, weil es ja aus dem datenbereich liest, in dem der Thread nichts macht. .er fügt ja nur an, und verändert nichts...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523014</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 08:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:02:51 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>naja während das Fenster zeichnet, und der Thread fügt einen neuen datensatz hinzu<br />
muss ja nicht direkt wieder neu gezeichnet werden.. dann brauch ich da keinen puffer...</p>
<p>auserdem kann das Fenster ja asyncron zeichnen, weil es ja aus dem datenbereich liest, in dem der Thread nichts macht. .er fügt ja nur an, und verändert nichts...</p>
</blockquote>
<p>Deshalb sagte ich ja: Queue.<br />
Der Producer (Dein Rekorder) schiebt hinten was in die Queue rein. Der Consumer (Dein Fenster) entnimmt den vordersten Wert oder wartet, wenn nichts da ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523023</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:02:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:06:11 GMT]]></title><description><![CDATA[<p>ne das geht nich, der recorder zeichnet ja kontinuierlich auf von start bis ende.. das heist das Datenvolumen steigt kontinuerlich dem aufzeichnusintervall..</p>
<p>das diagrm zeichnet alles daten von start der aufzeichnung bist zum gegenwärtigen zeitpunkt, oder man definiert die Zeit von der gegenwart bist - X! und diese rbereich kann ich ja mit iteratoren definierren. deswegen liste...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523027</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:13:20 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ne das geht nich, der recorder zeichnet ja kontinuierlich auf von start bis ende.. das heist das Datenvolumen steigt kontinuerlich dem aufzeichnusintervall..</p>
<p>das diagrm zeichnet alles daten von start der aufzeichnung bist zum gegenwärtigen zeitpunkt, oder man definiert die Zeit von der gegenwart bist - X! und diese rbereich kann ich ja mit iteratoren definierren. deswegen liste...</p>
</blockquote>
<p>Und? Jeder aufgezeichnete Wert wandert in die Queue. Wenn das Zeichnen etwas länger dauert als das Einlesen, füllt sich die Queue halt langsam. Immer wenn der Zeichner mit dem Zeichnen eines Datums fertig ist, nimmt er sich das Nächste aus der Queue raus. Wo soll das Problem sein?<br />
Wenn die aufgezeichneten Daten endlos lang sind, hättest Du ein Problem, wenn das Erzeugen schneller geht als das Verbrauchen. Aber das hättest Du dann so oder so.<br />
PS: Wenn Du eh Win-API-Messages benutzt, könntest Du die Daten auch an die Message hängen. Die Messages werden nämlich vom OS für Dich gequeued.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523030</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:13:20 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:21:44 GMT]]></title><description><![CDATA[<p>du meinst ne queue als puffer für das diagramm zwischen recording daten?</p>
<p>Das Diagram soll abe keine eigenen container bzw. queue haben, sondern den primären list container des thread verwenden...</p>
<p>vll. reden wir aneinander vorbei^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523054</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:21:44 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:28:23 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>du meinst ne queue als puffer für das diagramm zwischen recording daten?</p>
<p>Das Diagram soll abe keine eigenen container bzw. queue haben, sondern den primären list container des thread verwenden...</p>
<p>vll. reden wir aneinander vorbei^^</p>
</blockquote>
<p>Du hast doch nur einen Puffer. Der Producer schreibt rein, der Consumer liest raus. Wozu zwei?</p>
<p>Du beißt Dich viel zu sehr an die STL Strukturen fest. Für Dich bedeutet Queue=std::queue, oder? Ich meinte Queue als generalles Konzept zur Entkopplung bei Producer/Consumer Konstrukten:<br />
<a href="http://de.wikipedia.org/wiki/Warteschlange_%28Datenstruktur%29" rel="nofollow">Queue</a>.<br />
Mal davon abgesehen ist std::queue nur ein Adapter um einen Container der FIFO-Verhalten erzwingt. Als unterliegende Datenstruktur kannst Du auch eine std::list nehmen, wenn Dich das glüklich macht. Dafault ist std::deque.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523056</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:28:47 GMT]]></title><description><![CDATA[<p>ich versteh nich wieso ein puffer....</p>
<p>Der Thread fügt die daten hinzu.... nicht die diagramm....</p>
<p>du meinst der thread liefert nen datensatz und mit der message OnNEWDATA soll das diagrmm den datensatz an die list anfügen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523066</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:28:47 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 09:31:44 GMT]]></title><description><![CDATA[<p>Lies nochmal meinen letzten Post. Ich habe da nochmal editiert. Siehe auch den Wikipedialink. Da gibts ne Grafik die schön zeigt, worum es geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523068</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:18:16 GMT]]></title><description><![CDATA[<p>ich weis was ne queue ist , aber ich weis nich was die mir nutzen soll^^ Der Thread fügt records an die liste hinzu egal ob die Grafik die list derweil liest und zeichnet. solange sie nur bist zu dem element der list liest, wo der thread nichts machts...</p>
<p>WEil ich die die elemente der list ja nicht mehr rauschmeise, was drin ist ist drin;) das diagramm soll nur die letzen X elemente anzeigen;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523129</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:27:39 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ich weis was ne queue ist , aber ich weis nich was die mir nutzen soll^^</p>
</blockquote>
<p>Was ist darann denn so schwer? Der Thread packt Daten in die Queue rein (er ist der <strong>Producer</strong>), Dein Zeichnen-Ding entnimmt Datan aus der Queue (das ist der Consumer).<br />
Du magst vielleicht wissen, was eine Queue ist, aber Du hast anscheinend den Sinn davon noch nicht verstanden.</p>
<pre><code>|-----------------------|                  |-----------------------|
|Thread                 |                  | Zeichnen Thread       |
|                       |                  |                       |
|                       |                  |                       |
|   Daten               |                  |        Daten          |
|     |                 |    Queue         |         /\            |
|     |      |---|---|---|---|---|---|---|---|---|    |            |
|     |---&gt;  |   |   |   |   |   |   |   |   |   | ---|            |
|            |---|---|---|---|---|---|---|---|---|                 |
|                       |                  |                       |
|                       |                  |                       |
|                       |                  |                       |
|                       |                  |                       |
|                       |                  |                       |
|-----------------------|                  |-----------------------|
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1523132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523132</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:30:49 GMT]]></title><description><![CDATA[<blockquote>
<p>Was ist darann denn so schwer? Der Thread packt Daten in die Queue rein (er ist der Producer), Dein Zeichnen-Ding entnimmt Datan aus der Queue (das ist der Consumer).<br />
Du magst vielleicht wissen, was eine Queue ist, aber Du hast anscheinend den Sinn davon noch nicht verstanden.</p>
</blockquote>
<p>genau das will ich nicht.....</p>
<p>beim anlegen eine aufzeichnung wird eine recording objekt angelegt, jede sekunde für der thread daten hinzu.</p>
<p>Das Diagramm macht nichts anderes als Diese Daten noch anzuzeigen, muss aber nicht... das diagramm hat also nur eine referen aufdie list.. und zeig die daten an.. die eigentlich aufzeichnung macht ja der thread</p>
<p>aber danke für den denkansatz <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="🙂"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1523139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523139</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:30:49 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:30:19 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ich weis was ne queue ist , aber ich weis nich was die mir nutzen soll^^ Der Thread fügt records an die liste hinzu egal ob die Grafik die list derweil liest und zeichnet. solange sie nur bist zu dem element der list liest, wo der thread nichts machts...</p>
<p>WEil ich die die elemente der list ja nicht mehr rauschmeise, was drin ist ist drin;) das diagramm soll nur die letzen X elemente anzeigen;)</p>
</blockquote>
<p>Ich verstehe den Post nichtmal im Ansatz. Probier mal die Shift-Taste aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523140</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:36:18 GMT]]></title><description><![CDATA[<pre><code>----------------------
thread

List:
&lt;1&gt; &lt;2&gt; &lt;3&gt; &lt;4&gt; &lt;5&gt; 

----------------------

----------------------
UI grahic

referen auf list un
iterator auf &lt;1&gt; und &lt;5&gt;

---------------------
</code></pre>
<p>der thread fügt jetzt ein neues element an &lt;6&gt;<br />
die UI zeichnet die kurven von &lt;1&gt; bis &lt;5&gt;<br />
die kurve muss also nicht UNBEDING Syncron im takt wie der thread die punkte zeichen...</p>
<p>die List im thread wird gleichzeitig in ne datei gespeichert..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523142</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:40:47 GMT]]></title><description><![CDATA[<p>Da wäre ne Queue perfekt...<br />
Die Nichtsynchronität ist doch gerade der <strong>Sinn</strong> der Queue. Die entkoppelt den Producer vom Consumer.<br />
Der Rekorder packt einfach immer was rein. Egel wie er gerade lustig ist. Der Zeichner nimmt einfach was raus, so schnell er kann.<br />
Wenn der Zeichner schneller ist als der Rekorder, läuft die Queue leer. Der Zeichner muss warten, bis wieder was zum Zeichnen da ist.<br />
Wenn der Rekorder schneller ist als der Zeichner füllt sich die Queue langsam bis der Rekorder fertig ist.<br />
Da ist nichts synchron. Der Zeichner versucht zu zeichnen, wenn er es möchte, und der Rokorder packt was rein, wenn er möchte.<br />
Und es gibt auch nur eine Queue. Der eine packt was rein, der andere nimmt was raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523143</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:42:00 GMT]]></title><description><![CDATA[<p>wo werden die daten dann gespeichert?? wenn der thread sie in die queue gibt, und das diagamm sie abholt? ich will die aufgezeichneten daten später wieder anschaun kkönnen, in dem ich die datensätze lade...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523144</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Thu, 05 Jun 2008 10:45:34 GMT]]></title><description><![CDATA[<p>Der Rekorder kann doch direkt jeden aufgezeichneten Datensatz gleichzeitig zum in die Queue packen auch wegspeichern. Wieso muss es dafür erst in einer Liste stehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523146</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 10:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Fri, 06 Jun 2008 11:13:24 GMT]]></title><description><![CDATA[<p>Hm, dazu gleich noch eine Frage...</p>
<p>Selbst wenn man die Queue mittels zB einer CriticalSection Thread-Safe macht, könnte das zu Problemem führen. So weit ich weiß, darf immer nur der Prozess, der Objekte erzeugt hat, diese auch wieder löschen. Wenn aber nun der Producer die Daten in die Queue schreibt und der Consumter sie ausliest, werden die Objekte vom Producer erzeugt, aber vom Consumer gelöscht. Und genau das könnte ein Problem mit der Speicherverwaltung geben, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523979</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 06 Jun 2008 11:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Fri, 06 Jun 2008 11:15:33 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Hm, dazu gleich noch eine Frage...</p>
<p>Selbst wenn man die Queue mittels zB einer CriticalSection Thread-Safe macht, könnte das zu Problemem führen. So weit ich weiß, darf immer nur der Prozess, der Objekte erzeugt hat, diese auch wieder löschen. Wenn aber nun der Producer die Daten in die Queue schreibt und der Consumter sie ausliest, werden die Objekte vom Producer erzeugt, aber vom Consumer gelöscht. Und genau das könnte ein Problem mit der Speicherverwaltung geben, oder nicht?</p>
</blockquote>
<p>Hmm, wenn dem so wäre, dann würden aber alle Pipes die so benutzt werden nicht gehen.<br />
Hast Du mal eine Referenz, wo das steht? Würde mich mal interessieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523980</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 06 Jun 2008 11:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Fri, 06 Jun 2008 11:35:11 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Hast Du mal eine Referenz, wo das steht? Würde mich mal interessieren.</p>
</blockquote>
<p>Ich hatte gehofft, ihr könntet mir eine entsprechende Referenz geben. <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/1523993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523993</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 06 Jun 2008 11:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Fri, 06 Jun 2008 11:36:43 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Hast Du mal eine Referenz, wo das steht? Würde mich mal interessieren.</p>
</blockquote>
<p>Ich hatte gehofft, ihr könntet mir eine entsprechende Referenz geben. <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>camper?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523996</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 06 Jun 2008 11:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to vector Threadsave read&#x2F;write on Fri, 06 Jun 2008 12:06:50 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Hm, dazu gleich noch eine Frage...</p>
<p>Selbst wenn man die Queue mittels zB einer CriticalSection Thread-Safe macht, könnte das zu Problemem führen. So weit ich weiß, darf immer nur der Prozess, der Objekte erzeugt hat, diese auch wieder löschen. Wenn aber nun der Producer die Daten in die Queue schreibt und der Consumter sie ausliest, werden die Objekte vom Producer erzeugt, aber vom Consumer gelöscht. Und genau das könnte ein Problem mit der Speicherverwaltung geben, oder nicht?</p>
</blockquote>
<p>Im Prinzip ist das möglich. Wenn ich es richtig verstanden habe, soll es hier allerdings um verschiedene Threads in <em>einem</em> Prozess gehen. Ob ein Speicherblock, der in einem Thread angefordert wurde, in einem anderen Thread freigegeben werden darf oder nicht, hängt letztlich von der Implementierung der Speicherverwaltung ab. Es wäre denkbar, dass die Speicherverwaltung jedem Thread lokale Blöcke zuteilt, innerhalb deren keine Synchronisation erforderlich ist. In diesem Fall müsste man wohl die Speicherblöcke, die beim Consumer ankommen wieder zum Producer zurückbefördern (z.B. über eine Queue, bei der beide Rollen vertauscht sind). Andererseits ist das - üblicherweise - kein Problem mit den Standardfunktionen (new/delete, malloc/free etc.).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524017</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 06 Jun 2008 12:06:50 GMT</pubDate></item></channel></rss>