<?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[komisches problem mit POSIX Thread...]]></title><description><![CDATA[<p>ok hier erst mal der quelltext der interessant sein dürfte:</p>
<pre><code class="language-cpp">#include &quot;Socket.h&quot;
#include &quot;TheServer.h&quot;

void TheServer::handleConnection(int _client){
    cout &lt;&lt; &quot;Client Connected!&quot; &lt;&lt; endl;
    sendText(_client,&quot;Willkommen auf dem Server&quot;);
    client.push_back(_client);
    startWaitingForMessages(_client);
    //CLOSE(_client);
}
TheServer::TheServer(){
}
void *TheServer::stWaitForMessages(void *_arg){
    struct theServerClient client;
    client=*(struct theServerClient *)_arg;
    TheServer *sv=client.server;
    sv-&gt;waitForMessages(client.client);
}
void TheServer::waitForMessages(int _client){ // &lt;&lt;------
}
void TheServer::startWaitingForMessages(int _client){
    struct theServerClient client;
    client.server= this;
    client.client=_client;
    pthread_t thread;
    pthread_create(&amp;thread,NULL,stWaitForMessages,&amp;client);
}
</code></pre>
<p>die funktion die mit &lt;&lt;------ gekennzeichnet ist macht irgendwie probleme<br />
ich compiliere unter windows mit mingw...</p>
<p>also wenn in dieser funktion zb cout &lt;&lt; &quot;a&quot;; drinsteht gibts ein problem fehler senden teil segmentation fault nehm ich an... wenn nichts drin steht gibts keine probleme... es muss irgendwo an der sache mit dem pthread liegen... ich ralls irgendwie ned, kann mir wer helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182749/komisches-problem-mit-posix-thread</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 01:58:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182749.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 May 2007 19:26:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Mon, 28 May 2007 19:26:43 GMT]]></title><description><![CDATA[<p>ok hier erst mal der quelltext der interessant sein dürfte:</p>
<pre><code class="language-cpp">#include &quot;Socket.h&quot;
#include &quot;TheServer.h&quot;

void TheServer::handleConnection(int _client){
    cout &lt;&lt; &quot;Client Connected!&quot; &lt;&lt; endl;
    sendText(_client,&quot;Willkommen auf dem Server&quot;);
    client.push_back(_client);
    startWaitingForMessages(_client);
    //CLOSE(_client);
}
TheServer::TheServer(){
}
void *TheServer::stWaitForMessages(void *_arg){
    struct theServerClient client;
    client=*(struct theServerClient *)_arg;
    TheServer *sv=client.server;
    sv-&gt;waitForMessages(client.client);
}
void TheServer::waitForMessages(int _client){ // &lt;&lt;------
}
void TheServer::startWaitingForMessages(int _client){
    struct theServerClient client;
    client.server= this;
    client.client=_client;
    pthread_t thread;
    pthread_create(&amp;thread,NULL,stWaitForMessages,&amp;client);
}
</code></pre>
<p>die funktion die mit &lt;&lt;------ gekennzeichnet ist macht irgendwie probleme<br />
ich compiliere unter windows mit mingw...</p>
<p>also wenn in dieser funktion zb cout &lt;&lt; &quot;a&quot;; drinsteht gibts ein problem fehler senden teil segmentation fault nehm ich an... wenn nichts drin steht gibts keine probleme... es muss irgendwo an der sache mit dem pthread liegen... ich ralls irgendwie ned, kann mir wer helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294013</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Mon, 28 May 2007 19:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Mon, 28 May 2007 19:33:21 GMT]]></title><description><![CDATA[<p>lösch mal das hier: TheServer:: von beiden funktionen weg, möglicherweise mag pthread_create() keine c++ member funktionen...<br />
<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/1294017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294017</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Mon, 28 May 2007 19:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Mon, 28 May 2007 19:34:22 GMT]]></title><description><![CDATA[<p>doch mags schon ich habs ja schon ausprobiert an andrer stelle des macht ja die sache so komisch es geht 2 mal und jetzt grad ned... und leer funktioniert die funktion... also wenn des ned komisch is...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294019</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Mon, 28 May 2007 19:34:22 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Mon, 28 May 2007 19:49:18 GMT]]></title><description><![CDATA[<p>in der 'void *TheServer::stWaitForMessages' fehlt übrigens ein rückgabewert <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/1294028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294028</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Mon, 28 May 2007 19:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Mon, 28 May 2007 19:53:10 GMT]]></title><description><![CDATA[<p>ja dadran liegts auch ned... kann sein dass es n problem gibt wenn n nebenthread noch nen thread startet? ich bin das problem jetzt umgangen indem ich den 2. nebenthread überflüssig gemacht hab...</p>
<p>danke dir, Hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294032</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Mon, 28 May 2007 19:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Mon, 28 May 2007 22:02:02 GMT]]></title><description><![CDATA[<p>pthread_create funktioniert NUR mit einem einfachen function pointer, NICHT mit einem member function pointer.<br />
die funktion darf teil einer klasse sein, dann muss sie aber &quot;static&quot; sein, damit es eben wieder ein normaler function pointer wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294105</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 28 May 2007 22:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Tue, 29 May 2007 05:25:19 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>die funktion darf teil einer klasse sein,</p>
</blockquote>
<p>Strenggenommen nichtmal das. Die Funktion muss extern &quot;C&quot; void (<em>)(void</em>) sein.</p>
<p>Es funktioniert zwar oft (wenn nicht zur Zeit immer) mit einer statischen Methode, es steht aber nirgends geschrieben dass eine statische Methode dasselbe Calling-Interface haben muss wie eine freie extern &quot;C&quot; Funktion, ist also per se &quot;nicht portabel&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294158</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 29 May 2007 05:25:19 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Tue, 29 May 2007 06:15:53 GMT]]></title><description><![CDATA[<p>Huch, das wusste ich nicht, sorry! *schäm*</p>
<p>Aber wenigstens lässt sich das leicht &quot;thunken&quot;, da man ja einen void* Parameter hat netterweise. (Ich darf garnicht dran denken dass es immer noch Callback-Funktionen gibt die KEINEN &quot;void* userdata&quot; o.ä. haben, sonst werd' ich gleich wieder unrund...)</p>
<p>Natürlich kann man so auch echte Memberfunktionen &quot;einwickeln&quot;, ein kleines Template genügt ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294170</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 May 2007 06:15:53 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Tue, 29 May 2007 13:54:09 GMT]]></title><description><![CDATA[<p>ja des hab ich ja schon öfter geamcht die funktion is static daran lags ja nich aber is ja auch egal der thread war überflüssig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294492</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Tue, 29 May 2007 13:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Tue, 29 May 2007 16:13:52 GMT]]></title><description><![CDATA[<p>DaHunger schrieb:</p>
<blockquote>
<p>doch mags schon ich habs ja schon ausprobiert an andrer stelle des macht ja die sache so komisch es geht 2 mal und jetzt grad ned... und leer funktioniert die funktion... also wenn des ned komisch is...</p>
</blockquote>
<p>Das klingt sehr nach dem Problem über das wir uns schn mal ausgetauscht hatten.</p>
<p>- Thread I (&quot;main&quot;-Thread) erzeugt Objekt o als Stackvariable;<br />
- Thread I erzeugt Thread II mit (void*) &amp;o als Argument;<br />
- Thread I läuft weiter und vernichtet o am Ende des Blocks<br />
- Thread II will aber (&amp;o)-&gt;irgendwas() aufrufen</p>
<p>Obs (noch) gut geht oder (schon) nicht mehr hängt dann vom Scheduling ab; wirkt also ggf. zufällig!</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294629</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 29 May 2007 16:13:52 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Tue, 29 May 2007 22:08:55 GMT]]></title><description><![CDATA[<p>nene so wars bei mir bisher nich:<br />
Thread I erzeugt ein Objekt der Klasse K<br />
der Konstruktor der Klasse K enthält eine Endlosschleife (!!!)(bzw eine funktion die danach aufgerufen wird von außerhalb)<br />
bei jedem durchlauf dieser schleife wird auf ein client gewartet und mit diesem dann<br />
Thread II gestartet der eine statische funktion der Klasse K ausführt. als parameter übergibt er das objekt selbst und den client.<br />
die statische funktion ruft eine nicht-statische funktion des objektes auf und übergibt als parameter den client.</p>
<p>Das objekt existiert also immer noch! was aber NICHT geht ist, dass Thread II jetzt einen Thread III startet der ähnlich funktioniert wie der aufruf von Thread II während Thread I (der Hauptthread) beliebig viele Threads Parallel starten kann.</p>
<p>scheint wohl einafch so zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>aber eine so kroteske konstellation sollte denke ich von grund auf überdacht werden wo irgendwelche nebenthreads noch weiter nebenthreads starten... hab ich getan unds geschafft ohne auszukommen was diskutiern wir hier noch? XD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294868</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Tue, 29 May 2007 22:08:55 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Wed, 30 May 2007 02:58:10 GMT]]></title><description><![CDATA[<p>Weiss auch nicht was du noch hier schreibst, der von dir ursprünglich gepostete Code ist grundfalsch, warum hat Gast++ beschrieben.</p>
<p>Was du jetzt schreibst kann ich nicht nachvollziehen, ist leider etwas konfus.</p>
<pre><code class="language-cpp">void TheServer::startWaitingForMessages(int _client){ 
    struct theServerClient client; // &lt;-- Problem Teil 1
    client.server= this; 
    client.client=_client; 
    pthread_t thread; 
    pthread_create(&amp;thread,NULL,stWaitForMessages,&amp;client); // &lt;-- Problem Teil 2
}
</code></pre>
<p>Du übergibst die Adresse von &quot;client&quot; an den neuen Thread, diese Adresse wird aber sofort nach dem pthread_create Aufruf ungültig, da es sich um ein lokales Objekt handelt. Wenn der neue Thread schnell genug losläuft geht es, wenn er zu spät losläuft geht es nicht. Das ist das Problem.</p>
<p>Wenn der echte Code mit dem du Probleme hast anders aussieht solltest du vielleicht den posten. Üblicherweise macht man sowas eher so:</p>
<pre><code class="language-cpp">void* TheServer::stWaitForMessages(void* _arg){ 
    std::auto_ptr&lt;theServerClient&gt; client(static_cast&lt;theServerClient*&gt;(_arg)); // ownership übernehmen

    // ...
    return 0;
}

void TheServer::startWaitingForMessages(int _client){ 
    std::auto_ptr&lt;theServerClient&gt; client(new theServerClient);
    client-&gt;server= this; 
    client-&gt;client=_client; 
    pthread_t thread; 
    if (pthread_create(&amp;thread,NULL,stWaitForMessages,client.get()) == 0)
    {
        // success, &quot;client&quot; gehört jetzt dem Thread
        client.release();
    }
    else
    {
        // fehler, &quot;client&quot; soll vom auto_ptr freigegeben werden
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294896</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 30 May 2007 02:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Wed, 30 May 2007 08:29:44 GMT]]></title><description><![CDATA[<p>achso jetz versteh ich das was gast++ gemeint hat,<br />
aber ich glaube nich dasses daran lag zumindest nicht ausschließlich. Grundfalsch würd ich das nich nennen ich müsste nur die variable wieder global machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294990</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Wed, 30 May 2007 08:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Wed, 30 May 2007 08:44:45 GMT]]></title><description><![CDATA[<p>Nein, du hast Recht, das ist noch eine Stufe falscher als grundfalsch. Hätte ich das in der Arbeit gesehen wäre ich ausgeflippt und hätte mich 10 Min. nichtmehr beruhigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295003</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 30 May 2007 08:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Wed, 30 May 2007 12:56:04 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Nein, du hast Recht, das ist noch eine Stufe falscher als grundfalsch. Hätte ich das in der Arbeit gesehen wäre ich ausgeflippt und hätte mich 10 Min. nichtmehr beruhigt.</p>
</blockquote>
<p>Dazu könnte man noch beachten dass der OP schon eine solche &quot;Diskussion&quot; um genau das Thema mit mir hatte <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-110668.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-110668.html</a><br />
Insofern grenzt das hier auch noch an ein Doppelposting.</p>
<p>DaHunger schrieb:</p>
<blockquote>
<p>scheint wohl einafch so zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Nein, ist es nicht. Dein Code ist dubios.</p>
<p>DaHunger schrieb:</p>
<blockquote>
<p>hab ich getan unds geschafft ohne auszukommen was diskutiern wir hier noch? XD</p>
</blockquote>
<p>Wenn ich sowas lese kommt mir echt die Galle hoch...<br />
Du bist weit davon entfernt mit irgendjemandem über Threads &quot;diskutieren&quot; zu können!<br />
Wenn ich sehe dass Du nach meinem Hinweis mit dem Singleton nicht die Instanz sonern die Klasse &quot;TheServer&quot; genannt hast sehe ich zudem wie ungenau Du diese Dinge durchdenkst.</p>
<p>Aber - Dein Wille ist mir Befehl - nochmal werde ich mir sicher nicht Dein Geschreibsel ansehen!</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295182</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Wed, 30 May 2007 12:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Wed, 30 May 2007 13:32:56 GMT]]></title><description><![CDATA[<p>ich weiß zwar grad ned was du mit den singletons willst, ich hab keine peilung was des sein soll, hatte ich auch nich als du mirs erste mal n link geschickt hast</p>
<p>warum ist mein code denn bitte &quot;grundfalsch&quot;?</p>
<p>ach und, ja tut mir sehr leid dass ich euch 3 mal darauf hingewiesen hab, dass mein problem gelöst ist und ihr euch daher nicht weiter damit befassen müsst...</p>
<p>wisst ihr was ihr habts geschafft, ich hab kb mehr auf des forum, wollte zwar eigentlich etwas aktiver hier werden aber wenn ich so was les dann vergeht mir die lust wieder</p>
<p>tschö<br />
gruß, hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295224</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Wed, 30 May 2007 13:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to komisches problem mit POSIX Thread... on Wed, 30 May 2007 17:03:16 GMT]]></title><description><![CDATA[<p>Weil du schätzomativ mal garnix nicht verstanden hast, deswegen &quot;befassen wir uns damit noch weiter&quot;.</p>
<p>Wenn du z.B. die &quot;Variable&quot; (Struktur/Objekt) einfach global machst überlebt &quot;sie&quot; zwar das Verlassen von &quot;startWaitingForMessages&quot;, bloss knallts dann irgendwann mal weil &quot;startWaitingForMessages&quot; zu schnell hintereinander aufgerufen wurde, und die &quot;globale Variable&quot; dann beim Loslaufen von Thread N bereits mit den Daten für Thread N+1 überschrieben wurde.</p>
<p>Natürlich kannst du all diese Dinge mit &quot;sowas geht dann eben wohl nicht&quot; abtun, kann dir keiner verbieten, nur dass es nicht stimmt. Gehen tut fast alles, bloss muss man es eben richtig machen. Und nicht falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295416</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 30 May 2007 17:03:16 GMT</pubDate></item></channel></rss>