<?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[Übergabe eines Pointers bei Createthread klappt nicht.]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich möchte einen Thread erzeugen und diesem einen Zeiger auf ein (temporäres) Objekt übergeben, damit der Thread Daten zum arbeiten hat...<br />
Leider läuft das irgendwie schief...</p>
<p>Hier der aufruf in der Main:</p>
<pre><code class="language-cpp">//...
newclientdata *ncd=new newclientdata;
ncd-&gt;nn=tempsock;
ncd-&gt;MyComm=&amp;MyComm;
ncd-&gt;player_object=p;
cout&lt;&lt;&quot;Main:ncd:&quot;&lt;&lt;ncd-&gt;nn&lt;&lt;endl;
threads.push_back(CreateThread(NULL, 0, clientthread, &amp;ncd, 0, &amp;tempid));
</code></pre>
<p>Die Daten, die ich übergeben möchte:</p>
<pre><code class="language-cpp">class newclientdata
	{
	public:
	commobj *MyComm;
	SOCKET nn;
	player		* player_object;
    newclientdata(){};

};
</code></pre>
<p>Der Arbeiterthread:</p>
<pre><code class="language-cpp">DWORD WINAPI clientthread(PVOID pParam)
{
	MSG    msg;
	cout&lt;&lt;&quot;Clientthread gestartet...&quot;&lt;&lt;endl;

	newclientdata * MyData;
	MyData=(newclientdata*)pParam;
 	cout &lt;&lt; &quot;Clientthread:&quot;&lt;&lt;MyData-&gt;nn&lt;&lt;endl;
	while (true)
	{
		BOOL    MsgReturn    =    GetMessage ( &amp;msg , NULL , 0, 0);
		cout &lt;&lt;&quot;clientthread recieved message:&quot;&lt;&lt;msg.message&lt;&lt;endl;
		cout &lt;&lt;MsgReturn;
	}		
};
</code></pre>
<p>Das führt (leider) zur folgenden Bildschirmausgabe:</p>
<pre><code>Main:ncd:1860
Clientthread gestartet...
Clientthread:4080912
</code></pre>
<p>Es sollte eigentlich bei beiden der gleiche Socket ausgegeben werden...<br />
Da mache ich doch sicher irgendwas grundsätzlich falsch - nur was?</p>
<p>Weiss jemand Rat?<br />
Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144982/übergabe-eines-pointers-bei-createthread-klappt-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 19:52:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144982.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Apr 2006 19:04:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übergabe eines Pointers bei Createthread klappt nicht. on Sun, 23 Apr 2006 19:04:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich möchte einen Thread erzeugen und diesem einen Zeiger auf ein (temporäres) Objekt übergeben, damit der Thread Daten zum arbeiten hat...<br />
Leider läuft das irgendwie schief...</p>
<p>Hier der aufruf in der Main:</p>
<pre><code class="language-cpp">//...
newclientdata *ncd=new newclientdata;
ncd-&gt;nn=tempsock;
ncd-&gt;MyComm=&amp;MyComm;
ncd-&gt;player_object=p;
cout&lt;&lt;&quot;Main:ncd:&quot;&lt;&lt;ncd-&gt;nn&lt;&lt;endl;
threads.push_back(CreateThread(NULL, 0, clientthread, &amp;ncd, 0, &amp;tempid));
</code></pre>
<p>Die Daten, die ich übergeben möchte:</p>
<pre><code class="language-cpp">class newclientdata
	{
	public:
	commobj *MyComm;
	SOCKET nn;
	player		* player_object;
    newclientdata(){};

};
</code></pre>
<p>Der Arbeiterthread:</p>
<pre><code class="language-cpp">DWORD WINAPI clientthread(PVOID pParam)
{
	MSG    msg;
	cout&lt;&lt;&quot;Clientthread gestartet...&quot;&lt;&lt;endl;

	newclientdata * MyData;
	MyData=(newclientdata*)pParam;
 	cout &lt;&lt; &quot;Clientthread:&quot;&lt;&lt;MyData-&gt;nn&lt;&lt;endl;
	while (true)
	{
		BOOL    MsgReturn    =    GetMessage ( &amp;msg , NULL , 0, 0);
		cout &lt;&lt;&quot;clientthread recieved message:&quot;&lt;&lt;msg.message&lt;&lt;endl;
		cout &lt;&lt;MsgReturn;
	}		
};
</code></pre>
<p>Das führt (leider) zur folgenden Bildschirmausgabe:</p>
<pre><code>Main:ncd:1860
Clientthread gestartet...
Clientthread:4080912
</code></pre>
<p>Es sollte eigentlich bei beiden der gleiche Socket ausgegeben werden...<br />
Da mache ich doch sicher irgendwas grundsätzlich falsch - nur was?</p>
<p>Weiss jemand Rat?<br />
Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043588</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sun, 23 Apr 2006 19:04:23 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe eines Pointers bei Createthread klappt nicht. on Sun, 23 Apr 2006 19:17:30 GMT]]></title><description><![CDATA[<p>ncd in Main ist doch schon ein Pointer, du übergibst in CreateThread mit &amp;ncd die Addresse des Pointers. Probier mal</p>
<pre><code class="language-cpp">CreateThread(NULL, 0, clientthread, ncd, 0, &amp;tempid)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1043597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043597</guid><dc:creator><![CDATA[WebNubbi]]></dc:creator><pubDate>Sun, 23 Apr 2006 19:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe eines Pointers bei Createthread klappt nicht. on Sun, 23 Apr 2006 19:32:07 GMT]]></title><description><![CDATA[<p>uhh - Richtig, Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043612</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sun, 23 Apr 2006 19:32:07 GMT</pubDate></item></channel></rss>