<?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[pthread_create() Parameter]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich übergebe pthread_create() als Parameter ein Objekt:</p>
<pre><code>Connection* cx = new Connection();
...
cout &lt;&lt; cx-&gt;get_server(); // liefert zum Beispiel 3
...
pthread_create(&amp;thread_ids[i], NULL, accept_handler, &amp;cx)
</code></pre>
<p>Wenn ich in der Funktion accept_handler() dann auf die Werte des Objektes zugreifen möchte, dann bekomme ich falsche Werte:</p>
<pre><code>void* accept_handler(void* context)
{
	Connection* cx = static_cast&lt;Connection*&gt; (context);
	cout &lt;&lt; cx-&gt;get_server(); // liefert zum Beispiel 26226704
}
</code></pre>
<p>Wie komme ich jetzt wieder an die richtigen Daten? Wahrscheinlich bekomme ich nur den Adressbereich geliefert.</p>
<p>Noch zur Ergänzung:</p>
<pre><code>int Connection::get_server()
{
	return this-&gt;s;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/325438/pthread_create-parameter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 15:20:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325438.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 May 2014 09:22:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pthread_create() Parameter on Fri, 02 May 2014 09:22:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich übergebe pthread_create() als Parameter ein Objekt:</p>
<pre><code>Connection* cx = new Connection();
...
cout &lt;&lt; cx-&gt;get_server(); // liefert zum Beispiel 3
...
pthread_create(&amp;thread_ids[i], NULL, accept_handler, &amp;cx)
</code></pre>
<p>Wenn ich in der Funktion accept_handler() dann auf die Werte des Objektes zugreifen möchte, dann bekomme ich falsche Werte:</p>
<pre><code>void* accept_handler(void* context)
{
	Connection* cx = static_cast&lt;Connection*&gt; (context);
	cout &lt;&lt; cx-&gt;get_server(); // liefert zum Beispiel 26226704
}
</code></pre>
<p>Wie komme ich jetzt wieder an die richtigen Daten? Wahrscheinlich bekomme ich nur den Adressbereich geliefert.</p>
<p>Noch zur Ergänzung:</p>
<pre><code>int Connection::get_server()
{
	return this-&gt;s;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2397063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397063</guid><dc:creator><![CDATA[moepmoep]]></dc:creator><pubDate>Fri, 02 May 2014 09:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to pthread_create() Parameter on Fri, 02 May 2014 09:33:58 GMT]]></title><description><![CDATA[<p>moepmoep schrieb:</p>
<blockquote>
<pre><code>Connection* cx = new Connection();
...
cout &lt;&lt; cx-&gt;get_server(); // liefert zum Beispiel 3
...
pthread_create(&amp;thread_ids[i], NULL, accept_handler, &amp;cx)
</code></pre>
</blockquote>
<p>Du übergibst ja auch die Adresse vom Zeiger (Also einen Zeiger auf deinen Zeiger). Es müsste da eher <code>pthread_create(&amp;thread_ids[i], NULL, accept_handler, cx);</code> heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397065</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Fri, 02 May 2014 09:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to pthread_create() Parameter on Fri, 02 May 2014 09:47:28 GMT]]></title><description><![CDATA[<p>Wenn du schon &quot;nackte&quot; Threads verwenden musst, solltest du C++11-Threads verwenden. Wenn dein Compiler dies noch nicht unterstützt, verwende boost. Selber das Rad neu zu erfinden und ein C++ Wrapper um das pthreads C API zu schreiben ist sinnlos verplemperte Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397068</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 02 May 2014 09:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to pthread_create() Parameter on Fri, 02 May 2014 09:56:31 GMT]]></title><description><![CDATA[<p>ich danke euch beiden. Es funktioniert jetzt und die Daten werden richtig übergeben. Ich werde mir dann mal die C++11 Thread angucken.</p>
<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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397069</guid><dc:creator><![CDATA[moepmoep]]></dc:creator><pubDate>Fri, 02 May 2014 09:56:31 GMT</pubDate></item><item><title><![CDATA[Reply to pthread_create() Parameter on Fri, 02 May 2014 12:43:50 GMT]]></title><description><![CDATA[<p>Wenn ich mir die Namen in deinem Code ansehe, sieht das nach sockets aus. Dann solltest du dir boost asio ansehen, das macht vermutlich genau das, was du da implementieren willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397090</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 02 May 2014 12:43:50 GMT</pubDate></item></channel></rss>