<?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[Thread-Prog. kompiliert, läuft aber nicht.]]></title><description><![CDATA[<p>Moin Leute,</p>
<p>ich habe mir das kleine Bsp. aus der iX vorgenommen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/bind.hpp&gt;
#include &lt;boost/function.hpp&gt;
#include &lt;boost/thread/thread.hpp&gt;

using namespace std;

unsigned int global_store = 0;
const unsigned int MAXCOUNTER = 500;

void counter(unsigned int n = 1)
{
  while(true)
  {
    if(global_store &gt; MAXCOUNTER)
      break;
    else if(++global_store%100 == 0)
      cout &lt;&lt; &quot;In counter &quot; &lt;&lt; n &lt;&lt; &quot;: &quot; &lt;&lt; global_store &lt;&lt; endl; 
  }
}

class counter_class
{
  public:
    void operator()(){ counter(2); }
};

int main(int argc, char **argv)
{
  boost::thread_group thrd_grp;
  counter_class cnt_class;
  boost::function&lt;void (void)&gt; bf_counter = boost::bind(counter, 3);

  thrd_grp.create_thread(&amp;counter);
  thrd_grp.create_thread(cnt_class);
  thrd_grp.create_thread(bf_counter);

  thrd_grp.join_all();
  return 0;
}
</code></pre>
<p>Das Ding kompiliere ich mit</p>
<pre><code>g++ -lboost_thread test.cpp
</code></pre>
<p>anstandslos.</p>
<p>Die Ausgabe:</p>
<pre><code>In counter 1: 100
In counter 1: 200
In counter 1: 300
In counter 1: 400
In counter 1: 500
</code></pre>
<p>Ich hätte eine gemischte Ausgabe &quot;In counter 1&quot;, &quot;In counter 2&quot; und &quot;In counter 3&quot; erwartet.</p>
<p>Was mach' ich falsch?</p>
<p>Gruß, Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237887/thread-prog-kompiliert-läuft-aber-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 05:14:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237887.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Apr 2009 09:56:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread-Prog. kompiliert, läuft aber nicht. on Fri, 03 Apr 2009 09:56:20 GMT]]></title><description><![CDATA[<p>Moin Leute,</p>
<p>ich habe mir das kleine Bsp. aus der iX vorgenommen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/bind.hpp&gt;
#include &lt;boost/function.hpp&gt;
#include &lt;boost/thread/thread.hpp&gt;

using namespace std;

unsigned int global_store = 0;
const unsigned int MAXCOUNTER = 500;

void counter(unsigned int n = 1)
{
  while(true)
  {
    if(global_store &gt; MAXCOUNTER)
      break;
    else if(++global_store%100 == 0)
      cout &lt;&lt; &quot;In counter &quot; &lt;&lt; n &lt;&lt; &quot;: &quot; &lt;&lt; global_store &lt;&lt; endl; 
  }
}

class counter_class
{
  public:
    void operator()(){ counter(2); }
};

int main(int argc, char **argv)
{
  boost::thread_group thrd_grp;
  counter_class cnt_class;
  boost::function&lt;void (void)&gt; bf_counter = boost::bind(counter, 3);

  thrd_grp.create_thread(&amp;counter);
  thrd_grp.create_thread(cnt_class);
  thrd_grp.create_thread(bf_counter);

  thrd_grp.join_all();
  return 0;
}
</code></pre>
<p>Das Ding kompiliere ich mit</p>
<pre><code>g++ -lboost_thread test.cpp
</code></pre>
<p>anstandslos.</p>
<p>Die Ausgabe:</p>
<pre><code>In counter 1: 100
In counter 1: 200
In counter 1: 300
In counter 1: 400
In counter 1: 500
</code></pre>
<p>Ich hätte eine gemischte Ausgabe &quot;In counter 1&quot;, &quot;In counter 2&quot; und &quot;In counter 3&quot; erwartet.</p>
<p>Was mach' ich falsch?</p>
<p>Gruß, Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1690311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1690311</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Fri, 03 Apr 2009 09:56:20 GMT</pubDate></item><item><title><![CDATA[Reply to Thread-Prog. kompiliert, läuft aber nicht. on Fri, 03 Apr 2009 09:58:45 GMT]]></title><description><![CDATA[<p>Vielleicht machst Du nichts falsch, und das Verhalten ist völlig in Ordnung? Ich schätze mal, der erste Thread hat den Zähler schon bei 500 bevor der zweite überhaupt drankommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1690314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1690314</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 03 Apr 2009 09:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to Thread-Prog. kompiliert, läuft aber nicht. on Fri, 03 Apr 2009 10:01:13 GMT]]></title><description><![CDATA[<p>Ich sehe gerade das MAXCOUNTER im Bsp. der iX zu klein gewählt war. Setze ich MAXCOUNTER = 100000000 macht das Prog. was es soll.</p>
<p>Hat sich also erledigt. Sorry für die heiße Luft.</p>
<p>Gruß, Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1690315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1690315</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Fri, 03 Apr 2009 10:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to Thread-Prog. kompiliert, läuft aber nicht. on Fri, 03 Apr 2009 10:02:14 GMT]]></title><description><![CDATA[<p>edit: ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1690316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1690316</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Fri, 03 Apr 2009 10:02:14 GMT</pubDate></item><item><title><![CDATA[Reply to Thread-Prog. kompiliert, läuft aber nicht. on Fri, 03 Apr 2009 10:02:50 GMT]]></title><description><![CDATA[<p>Das hat sich überschnitten. LordJaxom hat recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1690317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1690317</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Fri, 03 Apr 2009 10:02:50 GMT</pubDate></item></channel></rss>