<?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[Win32 Threads Designfrage]]></title><description><![CDATA[<p>Was ist performanter für eine Serverapplikation mit regem Netzverker und &gt;10 Clients?</p>
<ol>
<li>für jeden verbundenen Client einen eigenen Thread eröffnen und in diesem alles passieren lassen...</li>
<li>in der Main mit Select warten und bei Bedarf einen Thread erzeugen, der nur die eine Aktion abarbeitet....</li>
</ol>
<p>Worauf ich hinaus möchte ist einfach die Frage ob der Aufwand für das ständige Thread erzeugen und beenden hoch bzw. &quot;teuer&quot; ist.<br />
Und wie &quot;teuer&quot; im Vergleich das halten mehrer Threads ist...</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144890/win32-threads-designfrage</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 22:47:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144890.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Apr 2006 17:58:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 17:58:40 GMT]]></title><description><![CDATA[<p>Was ist performanter für eine Serverapplikation mit regem Netzverker und &gt;10 Clients?</p>
<ol>
<li>für jeden verbundenen Client einen eigenen Thread eröffnen und in diesem alles passieren lassen...</li>
<li>in der Main mit Select warten und bei Bedarf einen Thread erzeugen, der nur die eine Aktion abarbeitet....</li>
</ol>
<p>Worauf ich hinaus möchte ist einfach die Frage ob der Aufwand für das ständige Thread erzeugen und beenden hoch bzw. &quot;teuer&quot; ist.<br />
Und wie &quot;teuer&quot; im Vergleich das halten mehrer Threads ist...</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042885</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 22 Apr 2006 17:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 18:05:11 GMT]]></title><description><![CDATA[<p>Di kannst mit einem Thread Pool arbeiten. Die Threads sind immer am laufen und warten auf Arbeit. Diese teilst Du Ihnen zu und wenn sie ihren Job getan haben kehren sie in den Wartezustand zurück.</p>
<p>Evtl. findest Du hier eine Anregung dazu:<br />
<a href="http://www.codeproject.com/internet/jbsocketserver2.asp" rel="nofollow">http://www.codeproject.com/internet/jbsocketserver2.asp</a><br />
<a href="http://www.codeproject.com/threads/SimpleThreadPoolManager.asp" rel="nofollow">http://www.codeproject.com/threads/SimpleThreadPoolManager.asp</a><br />
<a href="http://www.codeproject.com/threads/Joshthreadpool.asp" rel="nofollow">http://www.codeproject.com/threads/Joshthreadpool.asp</a><br />
<a href="http://www.codeproject.com/threads/thread_pooling.asp" rel="nofollow">http://www.codeproject.com/threads/thread_pooling.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042888</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sat, 22 Apr 2006 18:05:11 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 18:14:49 GMT]]></title><description><![CDATA[<p>Also wenn du immer bei jeder Einfrage einen neuen Thread erstellst und danach wieder schließt, ist das ziemlich Kostenaufwendig. Stell dir mal vor 50 User stellen alle 1 1/2 Sekunden ein Request an den Server. Danach machen sie eine halbe Sekunde nichts, und dann geht das wieder los. Der Server wird beim Request einen Thread erstellen, und ihn nach einer halben Sekunde wieder schließen. Erstmal noch nicht so zeitaufwendig (wahrscheinlich 5ms Verzögerung). Dann kommen plötzlich 100 User, und das Spiel beginnt vom neuen: 15ms Verzögerung. Dann kommen 500 und dann vielleicht sogar 1000! Jeder User muss dann in etwa eine halbe Sekunde warten. Und der Server läuft heißer und heißer und immer heißer. Im Ernstfall geht er sogar down.</p>
<p>Und jetzt das Szenario mit einem Thread, der beim ersten Request für den User erzeugt wird und dann erst geschlossen wird, wenn der User das Programm beendet. 10 User stellen wieder ein Request an den Server. Im selbem Takt wie im obrigem Szenario. Alles wird ausgeführt, und da nichts weiter zu machen ist, entstehen keine oder nur Verzögerungen unter 1ms. Dann 100 User: maximal 1ms (mehr als bei 100, aber trotzdem nicht so tragisch). Dann 500 User und zu guter letzt 1000 User. Ich vermute, dass die Verzögerung maximal bei 10ms liegen wird, und auch der Server wird sich abkühlen.</p>
<p>Dies war eine etwas drastische Darstellung, aber meiner Meinung nach ein guter Vergleich.</p>
<p>Mfg Ominion</p>
<p>[EDIT]Mir glaubt es vielleicht keiner, aber als ich angefangen habe zu schreiben, agb es noch keine Antwort.[/EDIT]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042897</guid><dc:creator><![CDATA[Ominion]]></dc:creator><pubDate>Sat, 22 Apr 2006 18:14:49 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 18:22:34 GMT]]></title><description><![CDATA[<p>Hmm, irgendwo im Netz habe ich gelesen, dass es maximal 64 Threads geben kann... Wenn das stimmt wäre das aber ziemlich mager.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042904</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 22 Apr 2006 18:22:34 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 18:29:16 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Hmm, irgendwo im Netz habe ich gelesen, dass es maximal 64 Threads geben kann... Wenn das stimmt wäre das aber ziemlich mager.....</p>
</blockquote>
<p>Das ist falsch, vielleicht verwechselst du es mit dem Limit für select().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042908</guid><dc:creator><![CDATA[~~~~~~~]]></dc:creator><pubDate>Sat, 22 Apr 2006 18:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 18:30:51 GMT]]></title><description><![CDATA[<p>Wo hast Du denn das gelesen?<br />
Die Anzahl der Threads <strong>eines</strong> Prozesses ist aber tatsächlich beschrängt. Und zwar durch den virtuellen Adressraum, da jeder Thread seinen eigenen Stack benötigt). Unter x86 bekommt man somit theoretisch 2 GB / 1024 Bytes Threads erzeugt. Praktisch natürlich nicht, da in diesem 2 GB Adressraum auch noch andere DLLs und Daten/Code liegen. Den 2 GB Adressraum kann man auch noch erhöhen auf 3GB, was dann auch noch was bringt.<br />
Aber prinzipiell kann man sagen: Wenn man so viele Threads benötigt, ist dies ein sehr schelchtes Design, da das OS mehr mit Scheduling beschäftigt ist, als mit &quot;wirklichem&quot; Code!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042911</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 22 Apr 2006 18:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 18:58:46 GMT]]></title><description><![CDATA[<p>Okay, damit ist meine erste Frage zur vollsten Zufriedenheit beantwortet. Vielen Dank!</p>
<p>Das wirft aber nun eine neue Frage auf.<br />
Ich hatte ja schonmal zur Threadkommunikation einen Topic eröffnet, aber ich werde den Code nun umschreiben und dann passt die Lösung aus dem alten Topic nicht mehr.</p>
<p>(Hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-144748.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-144748.html</a>)</p>
<p>Ich mich mal selber zum Thema Threadkommunikation umgeschaut und bisher sehen mir Windowsevents und Messages vielversprechend aus, zumal das warten darauf keine CPU-Last erzeugt....</p>
<p>Leider verstehe ich das noch nicht so ganz ... gibt es vielleicht eine Dokumentation, idealerweise mit Beispielcodes in deutsch?</p>
<p>Gruss<br />
R</p>
<p>Edit das mit den 64 stammt von hier: <a href="http://www.tutorials.de/forum/c-c/229169-threads-waitformultipleobjects-wartet-nicht-wenn-ich-ueber-64-threads-starte.html" rel="nofollow">http://www.tutorials.de/forum/c-c/229169-threads-waitformultipleobjects-wartet-nicht-wenn-ich-ueber-64-threads-starte.html</a></p>
<p>Zitat:</p>
<pre><code>nCount
Specifies the number of object handles in the array pointed to by lpHandles. The maximum number of object handles is MAXIMUM_WAIT_OBJECTS.
</code></pre>
<p>Und MAXIMUM_WAIT_OBJECTS ist 64.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042932</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 22 Apr 2006 18:58:46 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 19:08:12 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Edit das mit den 64 stammt von hier: <a href="http://www.tutorials.de/forum/c-c/229169-threads-waitformultipleobjects-wartet-nicht-wenn-ich-ueber-64-threads-starte.html" rel="nofollow">http://www.tutorials.de/forum/c-c/229169-threads-waitformultipleobjects-wartet-nicht-wenn-ich-ueber-64-threads-starte.html</a></p>
<p>Zitat:</p>
<pre><code>nCount
Specifies the number of object handles in the array pointed to by lpHandles. The maximum number of object handles is MAXIMUM_WAIT_OBJECTS.
</code></pre>
<p>Und MAXIMUM_WAIT_OBJECTS ist 64.</p>
</blockquote>
<p>Und was hat das mit Threads zu tun!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042940</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 22 Apr 2006 19:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 19:23:39 GMT]]></title><description><![CDATA[<p>Hat es nicht?<br />
Ich dachte Betriebssystemintern seien Threads Objekte und wenn der Objekthandler auf 64 limitiert ist kann man halt nur auf 64 Objekte warten...<br />
Kann aber auch gut sein, dass ich total daneben liege..</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042954</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 22 Apr 2006 19:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Win32 Threads Designfrage on Sat, 22 Apr 2006 19:44:03 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Hat es nicht?</p>
</blockquote>
<p>Nein, hat es nicht.</p>
<p>std::Robin schrieb:</p>
<blockquote>
<p>Ich dachte Betriebssystemintern seien Threads Objekte und wenn der Objekthandler auf 64 limitiert ist kann man halt nur auf 64 Objekte warten...</p>
</blockquote>
<p>Wenn &quot;WaitForMultipleObjects&quot; limitiert ist, heisst es ja noch lange nicht, dass alles andere (was z.B. nicht warten muss) genauso limitiert ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042971</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 22 Apr 2006 19:44:03 GMT</pubDate></item></channel></rss>