<?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[Threads????]]></title><description><![CDATA[<p>Hi</p>
<p>ich wollte nen chat programmieren, habs auch soweit higekriegt.<br />
ABER ein Prob bleibt: der client empfängt die daten immer nur direckt nachdem der benutzer eine nachricht verschickt hat.</p>
<p>Das heißt, wenn ein anderer client hallo und dann tschüss schreibt dann kommt das beim ersten client nicht direkt an, sondern erst nachdem er etwas geschrieben hat. Das sieht dann ungefähr so aus:</p>
<pre><code>Bitte schreiben sie etwas: wie geht es dir?
Client 2 schreibt: hallo
Client 2 schreibt: tschüss
Bitte schreiben sie etwas:
</code></pre>
<p>ich hab von threads gehört und, dass das die beste lösung sein soll, leider hab ich absolut keine ahnung von threads.<br />
Ich weiß nur, dass ein thread sozusagen ein 2. prozess in einem prozess ist. Sozusagen ein 2 in 1 prozess. Meine Idee war: Der eine thread wartet auf antwort vom server und der andere sendet zum server.</p>
<p>Kennt jemand gute tutorials oder bücher über threads in C++???</p>
<p>Mfg Yazoo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211252/threads</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 00:08:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211252.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Apr 2008 05:05:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads???? on Mon, 21 Apr 2008 05:05:55 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich wollte nen chat programmieren, habs auch soweit higekriegt.<br />
ABER ein Prob bleibt: der client empfängt die daten immer nur direckt nachdem der benutzer eine nachricht verschickt hat.</p>
<p>Das heißt, wenn ein anderer client hallo und dann tschüss schreibt dann kommt das beim ersten client nicht direkt an, sondern erst nachdem er etwas geschrieben hat. Das sieht dann ungefähr so aus:</p>
<pre><code>Bitte schreiben sie etwas: wie geht es dir?
Client 2 schreibt: hallo
Client 2 schreibt: tschüss
Bitte schreiben sie etwas:
</code></pre>
<p>ich hab von threads gehört und, dass das die beste lösung sein soll, leider hab ich absolut keine ahnung von threads.<br />
Ich weiß nur, dass ein thread sozusagen ein 2. prozess in einem prozess ist. Sozusagen ein 2 in 1 prozess. Meine Idee war: Der eine thread wartet auf antwort vom server und der andere sendet zum server.</p>
<p>Kennt jemand gute tutorials oder bücher über threads in C++???</p>
<p>Mfg Yazoo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495350</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Mon, 21 Apr 2008 05:05:55 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Mon, 21 Apr 2008 10:28:34 GMT]]></title><description><![CDATA[<p>Im Moment gibt es leider nicht DEN Thread-Mechanismus für C++. Das ist Plattform bzw. Toolkit abhängig. Wenn Dir Boost was sagt schau mal unter <a href="http://www.boost.org/doc/libs/1_35_0/doc/html/thread.html" rel="nofollow">http://www.boost.org/doc/libs/1_35_0/doc/html/thread.html</a>, dann kannst Du Dir das mal ansehen.<br />
Ansonsten suche mal nach <strong>CreateThread</strong> (thx.@_matze) für Windows bzw. <strong>pthread_create</strong> für Posix-Threads unter Linux.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495377</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 21 Apr 2008 10:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Mon, 21 Apr 2008 07:57:07 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Im Moment gibt es leider nicht DEN Thread-Mechanismus für C++. Das ist Plattform bzw. Toolkit abhängig. Wenn Dir Boost was sagt schau mal unter <a href="http://www.boost.org/doc/libs/1_35_0/doc/html/thread.html" rel="nofollow">http://www.boost.org/doc/libs/1_35_0/doc/html/thread.html</a>, dann kannst Du Dir das mal ansehen.<br />
Ansonsten suche mal nach <strong>Create_Thread</strong> für Windows bzw. <strong>pthread_create</strong> für Posix-Threads unter Linux.</p>
</blockquote>
<p>Die Windows-Funktion heißt natürlich CreateThread. <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/1495424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495424</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 21 Apr 2008 07:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Mon, 21 Apr 2008 10:27:41 GMT]]></title><description><![CDATA[<p>pthreads</p>
<p>haben damit in schule selbst erfolgreich<br />
multithreaded chatserver mit räumen erstellt.</p>
<p>super anleitung(!): <a href="http://www.pronix.de/pronix-24.html" rel="nofollow">http://www.pronix.de/pronix-24.html</a></p>
<p>die anleitung hast du schnell durch, es ist echt gut erklärt. Damit schaffst du das locker.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495511</guid><dc:creator><![CDATA[XaTrIxX]]></dc:creator><pubDate>Mon, 21 Apr 2008 10:27:41 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 04:06:51 GMT]]></title><description><![CDATA[<p>XaTrIxX schrieb:</p>
<blockquote>
<p>pthreads</p>
<p>haben damit in schule selbst erfolgreich<br />
multithreaded chatserver mit räumen erstellt.</p>
<p>super anleitung(!): <a href="http://www.pronix.de/pronix-24.html" rel="nofollow">http://www.pronix.de/pronix-24.html</a></p>
<p>die anleitung hast du schnell durch, es ist echt gut erklärt. Damit schaffst du das locker.</p>
</blockquote>
<p>ich wette das funtzt nicht mit windows oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495979</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Tue, 22 Apr 2008 04:06:51 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 05:05:43 GMT]]></title><description><![CDATA[<p>ich hab ma in google createthread eingegeben und ein schönes tut gefunden, aber es funtzt nicht:</p>
<p>Ich mache es genau so wie im tut beschrieben:</p>
<pre><code class="language-cpp">hThread = CreateThread(NULL,
                         0,
                         ThreadFunc,
                         0,
                         0,
                         &amp;dwThreadID);
</code></pre>
<p>Compiler Fehler:</p>
<pre><code>&quot;code.cpp&quot;: E2034 Konvertierung von 'unsigned long (__stdcall *)(void *,int,char * *)' nach 'unsigned long (__stdcall *)(void *)' nicht möglich in Funktion main(int,char * *) in Zeile 109
&quot;code.cpp&quot;: E2342 Keine Übereinstimmung des Typs beim Parameter 'lpStartAddress' ('unsigned long (__stdcall *)(void *)' erwartet, 'unsigned long (__stdcall *)(void *,int,char * *)' erhalten) in Funktion main(int,char * *) in Zeile 109
</code></pre>
<p>dann hab ich es so probiert:</p>
<pre><code class="language-cpp">hThread = CreateThread(NULL,
                         0,
                         ThreadFunc(0,argc,argv), // diese parameter übernimmt die funktion Thradfunk
                         0,
                         0,
                         &amp;dwThreadID);
</code></pre>
<p>Compiler Fehler:</p>
<pre><code>&quot;code.cpp&quot;: E2034 Konvertierung von 'unsigned long' nach 'unsigned long (__stdcall *)(void *)' nicht möglich in Funktion main(int,char * *) in Zeile 109
&quot;code.cpp&quot;: E2342 Keine Übereinstimmung des Typs beim Parameter 'lpStartAddress' ('unsigned long (__stdcall *)(void *)' erwartet, 'unsigned long' erhalten) in Funktion main(int,char * *) in Zeile 109
</code></pre>
<p>darf ich der funktion ThreadFunk etwa keine weiteren parameter geben???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495983</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Tue, 22 Apr 2008 05:05:43 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 06:39:26 GMT]]></title><description><![CDATA[<p>Darfst du schon, aber nur in bestimmter Form, nämlich als void-Pointer (LPVOID). Du kannst dir allerdings eine Struktur basteln, die du dann für den Aufruf nach LPVOID castest und in der Thread Funktion wieder zurückcastest.</p>
<p>Vgl. <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-192328-and-highlight-is-createthread.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-192328-and-highlight-is-createthread.html</a>,<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-193855-and-highlight-is-createthread.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-193855-and-highlight-is-createthread.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496013</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 22 Apr 2008 06:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 08:38:58 GMT]]></title><description><![CDATA[<p>Deine ThreadProc muss exakt dieses Interface haben:</p>
<pre><code class="language-cpp">DWORD WINAPI ThreadProc(LPVOID lpParameter)
</code></pre>
<p>Anders geht es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496062</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 22 Apr 2008 08:38:58 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 09:58:18 GMT]]></title><description><![CDATA[<p>Man sollte unter Windows besser _beginthreadex benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496086</guid><dc:creator><![CDATA[}}]]></dc:creator><pubDate>Tue, 22 Apr 2008 09:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 11:57:51 GMT]]></title><description><![CDATA[<p>Oder man benutzt boost::thread. Dann kannst du auch mehrere Parameter typsicher übergeben. Man kann dann sogar Objekte als &quot;Funktion&quot; (Funktor halt) übergeben.</p>
<p>Es empfiehlt sich sowieso mal Boost anzuschauen <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>Ansonsten für alle WinAPI sachen, empfehle ich das WinAPI Forum und die MSDN.<br />
WinAPI: <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html</a><br />
MSDN: <a href="http://msdn2.microsoft.com/de-de/library/default.aspx" rel="nofollow">http://msdn2.microsoft.com/de-de/library/default.aspx</a><br />
MSDN (CreateThread): <a href="http://msdn2.microsoft.com/de-de/library/ms682453.aspx" rel="nofollow">http://msdn2.microsoft.com/de-de/library/ms682453.aspx</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496140</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 22 Apr 2008 11:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 17:30:26 GMT]]></title><description><![CDATA[<p>hab das prob mit globalen variablen gelößt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496357</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Tue, 22 Apr 2008 17:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 18:07:26 GMT]]></title><description><![CDATA[<p>bei meinem prog is ein neues prob, was jetzt nix mehr mit threads zu tun hat sondern eher mit der stdio.h:</p>
<p>ich rufe die funktion auf:</p>
<pre><code class="language-cpp">sprintf(buf2, &quot;%s schreibt: %s\n&quot;,names[i],buf);
</code></pre>
<p>Die Variablen existieren alle, aber in der buf2 steht nur drin:</p>
<pre><code>Name schreibt:
</code></pre>
<p>Name is der inhalt von names[i], wenn ich die Funktion so aufrufe:</p>
<pre><code class="language-cpp">sprintf(buf2, &quot;schreibt: %s\n&quot;,buf);
</code></pre>
<p>steht in buf2</p>
<pre><code>schreibt: (Der inhalt von buf)
</code></pre>
<p>WHY???</p>
<p>und was kann ich machen, dass in der buf2 drin steht:</p>
<pre><code>(Inhalt von names[i]) schreibt: (Inhalt von buf)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1496380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496380</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Tue, 22 Apr 2008 18:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Tue, 22 Apr 2008 20:28:23 GMT]]></title><description><![CDATA[<p>Für alle hier die CreateThread in C++ empfehlen:</p>
<h1>Böse Falle!</h1>
<p>Siehe: <a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B104641&amp;x=10&amp;y=15" rel="nofollow">http://support.microsoft.com/?scid=kb%3Ben-us%3B104641&amp;x=10&amp;y=15</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496486</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Tue, 22 Apr 2008 20:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Wed, 23 Apr 2008 00:18:21 GMT]]></title><description><![CDATA[<p>evilissimo schrieb:</p>
<blockquote>
<p>Für alle hier die CreateThread in C++ empfehlen:</p>
<h1>Böse Falle!</h1>
<p>Siehe: <a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B104641&amp;x=10&amp;y=15" rel="nofollow">http://support.microsoft.com/?scid=kb%3Ben-us%3B104641&amp;x=10&amp;y=15</a></p>
</blockquote>
<p>Hmmm, danke für die Info. Muss ich mal ein paar meiner älteren Programme anschauen und allenfalls ein Update durchführen.</p>
<p>Aber das ist dann wohl ein Grund mehr Boost zu benutzen <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>Allerdings, da geht es doch um die CRT, also C-Run-Time. Wenn man sich also an <strong>C++</strong> hält, passiert nix?</p>
<p>Edit: Noch was gesehen im Artikel</p>
<blockquote>
<p>APPLIES TO<br />
The C Run-Time (CRT), when used with:<br />
Microsoft Visual C++ 1.0 Professional Edition<br />
Microsoft Visual C++ 2.0 Professional Edition<br />
Microsoft Visual C++ 2.1<br />
Microsoft Visual C++ 2.2<br />
Microsoft Visual C++ 4.0 Standard Edition<br />
Microsoft Visual C++ 4.1 Subscription<br />
Microsoft Visual C++ 4.2 Professional Edition<br />
Microsoft Visual C++ 5.0 Standard Edition<br />
Microsoft Visual C++ 6.0 Service Pack 5</p>
</blockquote>
<p>Kommt also in 7.0, 7.1, 8.0 und 9.0 nicht mehr vor?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16154">@Yazoo</a>,<br />
1. Neuer Thread aufmachen.<br />
2. Das ist eher C, als C++. In C++ solltest du es mal mit einem StringStream versuchen. Oder die Boost-Bibliothek verwenden ^^<br />
3. Das einzige was mir jetzt spontan einfallen würde: Ist buf2 gross genug?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496543</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 23 Apr 2008 00:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Wed, 23 Apr 2008 05:06:04 GMT]]></title><description><![CDATA[<p>buf2 ist auf jeden fall groß genug,<br />
hier die deklarationen:</p>
<pre><code class="language-cpp">char buf[256];
char buf2[301];
std::string names[MAX_CLIENTS];   //in jedes names objekt des strings kommen max 44 zeichen
                                  // MAX_CLIENTS ist in diesem fall als 10 definiert
</code></pre>
<p>buf2 muss leider char sein, da ich das später mit nem TCP Socket verschicken möchte. Normalerweise armeite ich nur mit std::string in der string.h</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496552</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Apr 2008 05:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Wed, 23 Apr 2008 04:48:50 GMT]]></title><description><![CDATA[<p>der fehler is extrem strange ich habe grade ma ausprobiert was er macht wenn ich die reihenfolge der variablen vertausch also:</p>
<pre><code class="language-cpp">sprintf(buf2, &quot;%s schreibt: %s\n&quot;,buf,names[i]);
</code></pre>
<p>jetzt steht in buf2:</p>
<pre><code>(inhalt von buf) schreibt: (inhalt von names[i])
</code></pre>
<p>HHHHHHÄÄÄÄÄÄ?????????</p>
<p>Wieso, das ergibt doch keinen sinn, dass es in dieser Reihenfolge funtzt und in der anderen nicht!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496555</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Apr 2008 04:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Wed, 23 Apr 2008 05:26:56 GMT]]></title><description><![CDATA[<p>es gingen bis jetzt alle davon aus, dass names[i] ebenfalls ein C-string ist.<br />
du kannst an (s)printf keine std::strings übergeben, das erzeugt nämlich schlicht und einfach undefiniertes verhalten. verwende names[i].c_str() - oder steig gleich ganz auf std::strings um. wenn du die daten nur versendest, sollte ein konstanter C-string reichen (den liefert dir std::string::c_str()), willst du daten empfangen, kannst du diese in einen std::vector&lt;char&gt; speichern (der groß genug ist, sie zu fassen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496562</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 23 Apr 2008 05:26:56 GMT</pubDate></item><item><title><![CDATA[Reply to Threads???? on Wed, 23 Apr 2008 05:29:33 GMT]]></title><description><![CDATA[<p>vielen, vielen dank, das wusste ich noch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496564</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Apr 2008 05:29:33 GMT</pubDate></item></channel></rss>