<?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[Synchronisation von Zugriffen von 2 Threads auf eine Queue]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei std::threads von denen einer nur in eine std::queue pusht und der andere ausschließlich aus der queue popt, wenn Element enthalten sind.<br />
Somit ruft der &quot;pusher&quot; nur push_back() auf und der &quot;popper&quot; ruft nur size(), front() und pop() auf.<br />
Muss ich die beiden threads mit z.B. einem mutex sychronisieren oder ist das nicht notwendig?<br />
Ich habe danach gegooglet, allerdings findet man dort nur Antworten auf Senarios, in denen es entweder mehrere Schreiber bzw. Leser oder beides gibt, wo allerdings häufig nur die Leser untereinander und die Schreiber untereinander synchronisiert werden. Deswegen frage ich mich gerade, ob ich dann überhaupt mich darum kümmern muss, oder ob ich das einfach überspringen kann.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329091/synchronisation-von-zugriffen-von-2-threads-auf-eine-queue</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 02:32:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329091.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Nov 2014 12:24:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Synchronisation von Zugriffen von 2 Threads auf eine Queue on Fri, 07 Nov 2014 12:24:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei std::threads von denen einer nur in eine std::queue pusht und der andere ausschließlich aus der queue popt, wenn Element enthalten sind.<br />
Somit ruft der &quot;pusher&quot; nur push_back() auf und der &quot;popper&quot; ruft nur size(), front() und pop() auf.<br />
Muss ich die beiden threads mit z.B. einem mutex sychronisieren oder ist das nicht notwendig?<br />
Ich habe danach gegooglet, allerdings findet man dort nur Antworten auf Senarios, in denen es entweder mehrere Schreiber bzw. Leser oder beides gibt, wo allerdings häufig nur die Leser untereinander und die Schreiber untereinander synchronisiert werden. Deswegen frage ich mich gerade, ob ich dann überhaupt mich darum kümmern muss, oder ob ich das einfach überspringen kann.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426358</guid><dc:creator><![CDATA[Schamote]]></dc:creator><pubDate>Fri, 07 Nov 2014 12:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation von Zugriffen von 2 Threads auf eine Queue on Fri, 07 Nov 2014 12:29:13 GMT]]></title><description><![CDATA[<p>Schamote schrieb:</p>
<blockquote>
<p>Muss ich die beiden threads mit z.B. einem mutex sychronisieren</p>
</blockquote>
<p>Ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426362</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Fri, 07 Nov 2014 12:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation von Zugriffen von 2 Threads auf eine Queue on Fri, 07 Nov 2014 12:41:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29533">@Schamote</a><br />
Nur Leser müssen nicht synchronisiert werden. Dann darf es aber überhaupt gar keine Schreiber geben.</p>
<p>Sobald es Schreiber gibt musst du synchronisieren, und dann natürlich überall, auch bei den Lesezugriffen.</p>
<p>Welche Funktionen dabei genau aufgerufen werden ist irrelevant. Interessant ist nur ob die Funktionen const sind (=lesen) oder nicht (=schreiben).</p>
<p>Und BTW: beide deiner Threads sind Schreiber was die Queue betrifft, denn <code>pop()</code> ist ganz klar eine Schreiboperation.</p>
<p>Der Begriff &quot;schreiben&quot; ist hier wohl ungünstig, da verwirrend. Ob ein neues Element in die Queue &quot;geschrieben&quot; wird ist egal. Die Frage ist ob die Queue <em>modifiziert</em> wird. Und dann sollte klar sein, dass auch <code>pop()</code> als &quot;schreiben&quot; gilt, da es ja wohl eindeutig die Queue modifiziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426365</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 07 Nov 2014 12:41:30 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation von Zugriffen von 2 Threads auf eine Queue on Fri, 07 Nov 2014 12:52:18 GMT]]></title><description><![CDATA[<p>Alternativ gibt es auch lockfree queue, da braucht man dann nicht mehr synchronisieren: <a href="http://www.boost.org/doc/libs/1_56_0/doc/html/lockfree.html" rel="nofollow">http://www.boost.org/doc/libs/1_56_0/doc/html/lockfree.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426366</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 07 Nov 2014 12:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation von Zugriffen von 2 Threads auf eine Queue on Fri, 07 Nov 2014 16:01:20 GMT]]></title><description><![CDATA[<p>Danke für die Antworten.</p>
<p>Darauf, dass die beide schreibend zugreifen, hätte ich auch selber kommen können <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 schaue mich dann nochmal um bezüglich den verschiedenen Queue Ausführungen die es so alle gibt, single-producer/single-consumer scheint auch in die Richtung zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426396</guid><dc:creator><![CDATA[Schamote]]></dc:creator><pubDate>Fri, 07 Nov 2014 16:01:20 GMT</pubDate></item></channel></rss>