<?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 problem]]></title><description><![CDATA[<p>Hi,<br />
ich habe Folgendes:</p>
<pre><code class="language-cpp">class Fu
{
private:
bool ThreadRun;
Fu():ThreadRun(true){};
void stopThread(void){threadFunc_mutex-&gt;lock();ThreadRun=false; Join... etc};

};

/// Das ist ein eigener Thread
void Fu::threadFunc(void)
{

    while(ThreadRun)
    {
        threadFunc_mutex-&gt;lock();
         /// do something
        threadFunc_mutex-&gt;unlock();
    }

}
</code></pre>
<p>Es ist nun leider so, dass durch den Aufruf von stopThread<br />
die Variable ThreadRun nicht übernommen wird. Ich habe auch schon Volatile versucht, bringt aber nichts.</p>
<p>Was geht, ist wenn ich aus ThreadRun einen pointer mache, und<br />
die variable dahinter setze.</p>
<p>Wiso geht es mit einer einfachen variable nicht ??</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290654/thread-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 07:15:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290654.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 31 Jul 2011 18:51:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 18:51:05 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich habe Folgendes:</p>
<pre><code class="language-cpp">class Fu
{
private:
bool ThreadRun;
Fu():ThreadRun(true){};
void stopThread(void){threadFunc_mutex-&gt;lock();ThreadRun=false; Join... etc};

};

/// Das ist ein eigener Thread
void Fu::threadFunc(void)
{

    while(ThreadRun)
    {
        threadFunc_mutex-&gt;lock();
         /// do something
        threadFunc_mutex-&gt;unlock();
    }

}
</code></pre>
<p>Es ist nun leider so, dass durch den Aufruf von stopThread<br />
die Variable ThreadRun nicht übernommen wird. Ich habe auch schon Volatile versucht, bringt aber nichts.</p>
<p>Was geht, ist wenn ich aus ThreadRun einen pointer mache, und<br />
die variable dahinter setze.</p>
<p>Wiso geht es mit einer einfachen variable nicht ??</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100132</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 18:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:35:32 GMT]]></title><description><![CDATA[<p>EDIT: Ups... es wird wahrscheinlich kopiert und deswegen arbeitest du auf zwei verschiedenen Objekten. Lass dir die Adressen mal ausgeben</p>
<p>Du wirst zwangsläufig Informationen auf dem Heap hinterlegen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100141</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:35:32 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:34:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich starte den Thread so:</p>
<pre><code class="language-cpp">Fu::Fu()
{
boost::thread *_Thread = new boost::thread(boost::bind(&amp;Fu::threadFunc,this));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2100142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100142</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:35:04 GMT]]></title><description><![CDATA[<p>Okay moment...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100143</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:35:04 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:39:36 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>also ich starte den Thread so:</p>
<pre><code class="language-cpp">Fu::Fu()
{
boost::thread *_Thread = new boost::thread(boost::bind(&amp;Fu::threadFunc,this));
}
</code></pre>
</blockquote>
<p>Es macht keinen Sinn das boost::thread-Objekt auf dem Heap zu erstellen.</p>
<pre><code class="language-cpp">Fu::Fu()
{
boost::thread _Thread(boost::bind(&amp;Fu::threadFunc,this));
}
</code></pre>
<p>Wo liegt denn this? Ist es ein Stack oder Heap-Objekt?<br />
Also da this ja ein Zeiger ist, sollte keine Kopie erstellt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100144</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:43:53 GMT]]></title><description><![CDATA[<p>Also Fu selber ist im Stack.<br />
Das Mit dem Thread sehe ich gleich.<br />
War eher ein Versuch hier... das wir d noch geändert. Tut das hier was zur Sache ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100146</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:47:21 GMT]]></title><description><![CDATA[<p>Ich bin mir nicht sicher, aber ich würde vermuten, dass du auch ein undefiniertes Verhalten hast, da du den Thread im Konstruktor startest und das Objekt evtl. noch nicht komplett konstruiert ist.</p>
<p>EDIT: Auch wenn ich vermute, dass es daran nicht liegen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100147</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:45:56 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p>Also Fu selber ist im Stack.<br />
Das Mit dem Thread sehe ich gleich.<br />
War eher ein Versuch hier... das wir d noch geändert. Tut das hier was zur Sache ??</p>
</blockquote>
<p>Wenn es auf dem Stack liegt, dann überschreibst du dir vermutlich beim Verlassen des Scopes den Speicher... Im anderen Thread greifst du dann auf diese nicht mehr vorhandenen Daten zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100151</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:46:51 GMT]]></title><description><![CDATA[<p>Ja das mit this und konstruktor liegt mir auch schon ne Weile im magen.<br />
=)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100153</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:46:51 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:50:47 GMT]]></title><description><![CDATA[<p>Nein das passiert nicht. Fu ist in singelton.<br />
Der Thred arbeitet nicht mehr, wenn Fu vo Stack genommen wird.<br />
Und die Addresse ist die Selbe (also von der boolschen variable) ?????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100155</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:50:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Es macht keinen Sinn das boost::thread-Objekt auf dem Heap zu erstellen.</p>
</blockquote>
<p>Wenn er es weiterreichen möchte durchaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100156</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:50:11 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:55:06 GMT]]></title><description><![CDATA[<p><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="🙂"
    /> Na ja jetzt ists doch egal, ob der Thread auf dem heap oder nicht, bitte um vorschläge zum Thema *ggg*.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100160</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:16:06 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<blockquote>
<p>Es macht keinen Sinn das boost::thread-Objekt auf dem Heap zu erstellen.</p>
</blockquote>
<p>Wenn er es weiterreichen möchte durchaus.</p>
</blockquote>
<p>EDIT: Ups... boost::thread ist nicht copyable... Ich nehm alles zurück....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100161</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:16:06 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 19:58:17 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p><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="🙂"
    /> Na ja jetzt ists doch egal, ob der Thread auf dem heap oder nicht, bitte um vorschläge zum Thema *ggg*.</p>
</blockquote>
<p>Dann zeig mal dein Singleton...<br />
Wenn es ein Singleton ist, liegt es aber wohl nicht auf dem Stack <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/2100163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100163</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 19:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:00:53 GMT]]></title><description><![CDATA[<p>Also ich habe zuerst nicht auf dem Heap gehabt, dann wollt ich schauen obs auch mit Heap funktioniert und zum testen so gelassen. Ich werde es nicht auf dem Heap lassen, weil ich es selber für schöner halte, wenns auf dem Stack ist.</p>
<p>Aber ich komm nicht damit klar, dass er mit den Wert von meiner<br />
boolschen Variable nicht übernimmt. Das macht mich fertig, zumal die Addresse die Selbe ist. Also im Thread und im Hauptthread....<br />
Das kann doch eigentlich garnicht sein ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100165</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:00:53 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:03:50 GMT]]></title><description><![CDATA[<p>Ja du hast recht, =)...<br />
statische variablen werden auf dem heap erzeugt. ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100167</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:03:53 GMT]]></title><description><![CDATA[<p>Zeig uns einfach noch etwas mehr Code, dann brauchen wir nicht zu spekulieren <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>
<p>Also ein minimales Beispiel, das Objekterzeugung und starten des Threads beinhaltet....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100168</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:05:58 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p>Ja du hast recht, =)...<br />
statische variablen werden auf dem heap erzeugt. ...</p>
</blockquote>
<p>Hab ich nie behauptet, da es glaube ich auch nicht der Heap ist, wo sie liegt, sondern noch ein anderer Speicherbereich, wo mir leider aber gerade nicht einfällt wie er heißt <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/2100170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100170</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:19:34 GMT]]></title><description><![CDATA[<p>Was macht denn das boost::bind(Funktion,this)<br />
Okay, das wird am this liegen... ich versuchs nochmal etwas anderst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100176</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:19:39 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p>Was macht denn das boost::bind(Funktion,this)</p>
</blockquote>
<p>Es sorgt für ein Objekt, das eine Funktion</p>
<pre><code class="language-cpp">void operator()();
</code></pre>
<p>hat, in der die entsprechende Funktion auf dem this-Objekt aufgerufen wird.</p>
<p>boost::thread ruft diese Funktion nämlich auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100178</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:19:39 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:24:28 GMT]]></title><description><![CDATA[<p>Bist du dir sicher, dass du nicht irgendwo doch eine Kopie von deinem Singleton erzeugst? Verbiete mal explizit den Copy-Construktor &amp; Zuweisungs-Operator, indem du sie private machst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100179</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:24:28 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 20:44:54 GMT]]></title><description><![CDATA[<p>das bind kopiert ??? Kann das sein ??? Moment mal..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100183</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 20:44:54 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 22:03:29 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p>das bind kopiert ??? Kann das sein ??? Moment mal..</p>
</blockquote>
<p>Das bind kopiert das Objekt nicht, wenn du einen Zeiger übergibst... Also es kopiert nur den Zeiger, nicht aber das Objekt, auf das verwiesen wird.<br />
Wenn du das this dereferenzierst, dann würde eine Kopie erzeugt...</p>
<p>EDIT: <a href="http://www.boost.org/doc/libs/1_47_0/libs/bind/bind.html#with_member_pointers" rel="nofollow">http://www.boost.org/doc/libs/1_47_0/libs/bind/bind.html#with_member_pointers</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100200</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 22:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 22:25:25 GMT]]></title><description><![CDATA[<p>Okay,<br />
ich habs denke ich ganz gut hin bekommen.<br />
THX für die Hilfe.</p>
<p>jetzt ist es aber so, dass ich für ein boost::mutex auf dem Heap einen<br />
fehler beim bauen bekomme.</p>
<p>Er sagt mir dass boost::_noncopyable privat sei.... ????</p>
<p>Das hilft ir gerade aber nicht wirklich weiter.</p>
<p>Also einfach ein</p>
<pre><code class="language-cpp">boost::mutex mutex;
</code></pre>
<p>und schon habe ich die Fehlermeldung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100204</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 31 Jul 2011 22:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Sun, 31 Jul 2011 22:40:53 GMT]]></title><description><![CDATA[<p>Also ich vermute mal, dass dein mutex eine Member-Variable in einer deiner Klassen ist(?)... Im Default-Copy-Constructor dieser Klasse möchte er dann alle Member kopieren, was er aber nicht kann, da ein mutex nicht kopierbar ist. Folglich wirst du irgendwo in deinem Code eine Kopie dieses Objektes erzeugen, das den Mutex enthält, da sonst (glaub ich) keine Fehlermeldung kommen sollte.</p>
<p>Naja... Ist zwar ziemlich spekulativ, aber evtl. stimmts...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100206</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 31 Jul 2011 22:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to Thread problem on Mon, 01 Aug 2011 01:00:50 GMT]]></title><description><![CDATA[<p>Oka,<br />
so läuft =).</p>
<p>Ich hatte aber noch das Problem dass ich bei Folgemdem singelton<br />
zweimal den destruktoraufruf hatte:</p>
<pre><code class="language-cpp">...
public:
    static DataBase &amp; getInstance(){
        static DataBase instance;
        return instance;
    }
    ~DataBase();
private:
    DataBase(){}
...
</code></pre>
<p>Also ~DataBase wird zweimal aufgerufen, DataBase nur einmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100229</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Mon, 01 Aug 2011 01:00:50 GMT</pubDate></item></channel></rss>