<?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[die Lieben Threads wollen mal wieder nicht....]]></title><description><![CDATA[<p>also ich mache einen neuen Thread auf:</p>
<pre><code>int i=1;
hThread[i] = CreateThread(NULL,0,ThreadFunc,[b](LPVOID)i[/b],0, &amp;dwThreadID[i]);
</code></pre>
<p>und der ist folgendermaßen deklariert:</p>
<pre><code>DWORD WINAPI ThreadFunc(LPVOID data)
{       cout&lt;&lt;data;
	eigenefunktion([b]*****HIER*****[/b]); 
	return((DWORD)data);
}
</code></pre>
<p>Wo im moment noch *<strong>****HIER*****</strong> steht soll jetzt eigentlich die übergebene variable &quot;i&quot; (bzw. &quot;data&quot;) rein und zwar als integer (auf gut deutsch da soll ne 1 rein :D). Nur wie? &quot;data&quot; sieht so aus: 00000001</p>
<p>Vielleicht kann jemand zwei Worte sagen warum &quot;data&quot; so aussieht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264912/die-lieben-threads-wollen-mal-wieder-nicht</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 13:17:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264912.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Apr 2010 19:13:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 19:18:22 GMT]]></title><description><![CDATA[<p>also ich mache einen neuen Thread auf:</p>
<pre><code>int i=1;
hThread[i] = CreateThread(NULL,0,ThreadFunc,[b](LPVOID)i[/b],0, &amp;dwThreadID[i]);
</code></pre>
<p>und der ist folgendermaßen deklariert:</p>
<pre><code>DWORD WINAPI ThreadFunc(LPVOID data)
{       cout&lt;&lt;data;
	eigenefunktion([b]*****HIER*****[/b]); 
	return((DWORD)data);
}
</code></pre>
<p>Wo im moment noch *<strong>****HIER*****</strong> steht soll jetzt eigentlich die übergebene variable &quot;i&quot; (bzw. &quot;data&quot;) rein und zwar als integer (auf gut deutsch da soll ne 1 rein :D). Nur wie? &quot;data&quot; sieht so aus: 00000001</p>
<p>Vielleicht kann jemand zwei Worte sagen warum &quot;data&quot; so aussieht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883006</guid><dc:creator><![CDATA[Lepetitmort]]></dc:creator><pubDate>Wed, 14 Apr 2010 19:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 19:19:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cout&lt;&lt;*(int*)data;
</code></pre>
<p>(kein static_cast, weil du ihn auch nicht genommen hast)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883010</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 14 Apr 2010 19:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 19:31:56 GMT]]></title><description><![CDATA[<p>mmmhhhhhh... compilieren kann ich nun mit</p>
<pre><code>eigenefunktion(*(int*)data);
</code></pre>
<p>Aber es kommt:<br />
Unhandled exception at 0x004017f5 in fitellipse.exe: 0xC0000005: Access violation reading location 0x00000000.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883017</guid><dc:creator><![CDATA[Lepetitmort]]></dc:creator><pubDate>Wed, 14 Apr 2010 19:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 19:39:39 GMT]]></title><description><![CDATA[<p>mit einfachem</p>
<pre><code>(int)
</code></pre>
<p>ging's aber! Danke für den Tipp!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883020</guid><dc:creator><![CDATA[Lepetitmort]]></dc:creator><pubDate>Wed, 14 Apr 2010 19:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 19:59:35 GMT]]></title><description><![CDATA[<p>-.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883029</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Wed, 14 Apr 2010 19:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 20:01:49 GMT]]></title><description><![CDATA[<p>Ich weiss Noobs sind lustig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883031</guid><dc:creator><![CDATA[Lepetitmort]]></dc:creator><pubDate>Wed, 14 Apr 2010 20:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 20:19:23 GMT]]></title><description><![CDATA[<p>Lepetitmort schrieb:</p>
<blockquote>
<p>Ich weiss Noobs sind lustig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
</blockquote>
<p>Hihi.</p>
<p>Nee, es liegt an</p>
<pre><code class="language-cpp">struct Job
{
   int i;
   int j;
   int k;
};
...
Job job;//evtl besser mit new anlegen
j.i=5;
j.j=6;
j.k=7;
hThread[i] = CreateThread(NULL,0,ThreadFunc,&amp;job,0, &amp;dwThreadID[i]);
</code></pre>
<p>und entsprechend</p>
<pre><code class="language-cpp">DWORD WINAPI ThreadFunc(LPVOID data) 
{
    Job* pjob=(job*)data;
    cout&lt;&lt;pjob-&gt;i;
    eigenefunktion(*****HIER*****); 
    return((DWORD)data); 
}
</code></pre>
<p>Also es ist üblich, in dem Parameter nur einen Zeiger auf die Nutzdaten zu verschicken, statt die Nutzdaten selber. Aber bei Dir reicht es ausnahmsweise mal, die Nutzdaten selber zu schicken. Das hat uns total verwirrt und wir haben aus Gewohnheit immer *data machen wollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883039</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 14 Apr 2010 20:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 20:42:41 GMT]]></title><description><![CDATA[<p>Aaaaaaaaaaaaaaaaahhhhhh jetzt kommt's! Jetzt versteh ich den tieferen Sinn! Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883052</guid><dc:creator><![CDATA[Lepetitmort]]></dc:creator><pubDate>Wed, 14 Apr 2010 20:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Wed, 14 Apr 2010 23:33:27 GMT]]></title><description><![CDATA[<p>Lepetitmort schrieb:</p>
<blockquote>
<p>also ich mache einen neuen Thread auf:</p>
<pre><code>int i=1;
hThread[i] = CreateThread(NULL,0,ThreadFunc,[b](LPVOID)i[/b],0, &amp;dwThreadID[i]);
</code></pre>
</blockquote>
<p>Aufpassen: du übergibst da einen Zeiger auf eine lokale Variable.<br />
Die lokale Variable stirbt mit dem Scope in dem sie deklariert wurde.<br />
Der Thread läuft aber erst irgendwann an.</p>
<p>Also entweder musst du das synchronisieren, oder du darfst keine globale Variable übergeben. Sonst kann (und wird) es passieren, dass der Thread die Variable zu einem Zeitpunkt ausliest, wo sie schon garnichtmehr existiert. Das ist dann 1) laut Standard &quot;undefined behaviour&quot; und 2) wird es auch real Probleme verursachen. Nämlich dass du oft mal nicht den Wert liest den du vor CreateThread reingeschrieben hast, sondern irgendwas ganz anderes. Bzw. der Extremfall wäre, dass dir das Programm einfach um die Ohren fliegt (Access Violation, z.B. wenn der Thread der CreateThread aufgerufen hat schon beendet wurde, wodurch der für den Stack reservierte Speicher freigegeben wird).</p>
<p>Boost.Thread z.B. kapselt das alles schön, und gibt dir die Möglichkeit statt einer einfachen Thread-Funktion ein Funktionsobjekt. So kannst du z.B. mittels boost::bind Parameter an den Aufruf &quot;binden&quot;, ohne dass irgendwelche Zeiger nötig wären.<br />
So kannst du auch Werte übergeben die aus lokalen Variablen kommen, ohne dass synchronisiert werden muss. (Bzw. ohne dass du dich darum kümmern musst - intern muss Boost.Thread auch ein paar Dinge synchronisieren.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883101</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 14 Apr 2010 23:33:27 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Thu, 15 Apr 2010 09:36:06 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Aufpassen: du übergibst da einen Zeiger auf eine lokale Variable.</p>
</blockquote>
<p>Schreib dich nicht ab, lern lesen und schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Schau mal ganz genau hin. Er castet den int-Wert in einen Zeiger. Er kopiert also den Wert und übergibt nicht einen Zeiger auf eine lokale Variable. Kann aber trotzdem gefährlich sein wegen Überläufen. Wurde übrigens bereits in den vorhergehenden Beiträgen erwähnt <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883212</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 15 Apr 2010 09:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Thu, 15 Apr 2010 11:49:03 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Aufpassen: du übergibst da einen Zeiger auf eine lokale Variable.</p>
</blockquote>
<p>Schreib dich nicht ab, lern lesen und schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Schau mal ganz genau hin. Er castet den int-Wert in einen Zeiger. Er kopiert also den Wert und übergibt nicht einen Zeiger auf eine lokale Variable. Kann aber trotzdem gefährlich sein wegen Überläufen. Wurde übrigens bereits in den vorhergehenden Beiträgen erwähnt <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>Grüssli</p>
</blockquote>
<p>ROFL<br />
Du hast Recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Naja, oft gemachter Fehler, da hab ich einfach mal das gelesen was meistens dortsteht, statt dem, was diesmal wirklich dortsteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883292</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 15 Apr 2010 11:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Thu, 15 Apr 2010 11:53:21 GMT]]></title><description><![CDATA[<p>Außerdem war der reflexartige Verweis auf boost und daß man immer und überall boost nehmen muß, hier wiedermal deplaziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883295</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 15 Apr 2010 11:53:21 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Thu, 15 Apr 2010 19:09:22 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Außerdem war der reflexartige Verweis auf boost und daß man immer und überall boost nehmen muß, hier wiedermal deplaziert.</p>
</blockquote>
<p>Wieso?<br />
Also mal davon abgesehen dass ich das nicht vorhandene &quot;&amp;&quot; dazuphantasiert habe.</p>
<p>Kennst du eine Library die es ähnlich einfach macht korrekt bestimmte Daten an einen neuen Thread zu übergeben?</p>
<p>Davon abgesehen ... wo steht dass man immer und überall Boost verwenden muss? Ich finde die Boost einfach unheimlich praktisch, daher erwähne ich sie öfter. Wieso stört dich das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883556</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 15 Apr 2010 19:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to die Lieben Threads wollen mal wieder nicht.... on Thu, 15 Apr 2010 20:02:19 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Außerdem war der reflexartige Verweis auf boost ..., hier wiedermal deplaziert.</p>
</blockquote>
<p>Es gibt ein paar Themen wo ich den boost-Verweis für sinnvoll halte, gerade dort, wo einiges in den kommenden Standard einfließt. Und ich meine mich zu erinnern, das die Threadbibliothek im kommenden Standard der boost-Variante ähnelt. Zumal es sogar schon erste Bücher zu dem Thema gibt (wenn auch erst in Vorabversionen, z.B. habe ich hier das MEAP-PDF zu &quot;C++ Concurrency in Action&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883572</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 15 Apr 2010 20:02:19 GMT</pubDate></item></channel></rss>