AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.NET und Threads

Ein Thema von Neutral General · begonnen am 3. Jan 2009 · letzter Beitrag vom 5. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

.NET und Threads

  Alt 3. Jan 2009, 02:34
Hi,

Ich programmiere (bzw werde bald programmieren) einen recht großen Server mit C#. Das einfachste wäre es, einfach für jeden Clienten einen eigenen Thread zu erstellen und darin die Anfragen des jeweiligen Clients zu bearbeiten.

Allerdings kann es sein, dass 500 oder sogar 1000 Clients mit dem Server verbunden sind. Zumindest möchte ich, dass der Server das aushält. Ich dachte mir, dass ich dann nicht für jeden Clienten einen eigenen Thread erstellen kann, da dann evtl. das System leicht überfordert sein könnte. Also hab ich überlegt jeweils 20-50 Clients in einem Thread zu bearbeiten.

Das ganze ist allerdings dann auch etwas problematisch, da alles so asynchron wie möglich geschehen sollte, und dann auch wahrscheinlich zwischendurch clients den Thread wechseln würden. (d.h. ein anderer Thread wäre auf einmal für einen bestimmten Clienten verantwortlich).

Das ganze wäre dann schon ein ganzes Stück komplexer und son bisschen hick hack.

Von daher ist halt meine Frage, ob man nicht doch bedenkenlos 500-1000 Threads laufen lassen kann oder ob es andere Vorschläge gibt, wie man so eine große Anzahl von Clients verwalten kann.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: .NET und Threads

  Alt 3. Jan 2009, 09:53
Hallo,

das Stichwort leutet ThreadPool.
Da stellst Du einfach nacheinander die Aufgaben rein und der nächste freie Thread kümmert sich drum.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: .NET und Threads

  Alt 3. Jan 2009, 10:15
Genau, wobei asynchrone Methoden wie TcpListener.Begin*, NetworkStream.Begin*, ... den ThreadPool bereits ohne weiteres Zutun benutzen. Wenn also auf 90% Cleints sowieso nur in einer dieser Methoden gewartet wird, werden nur 50-100 Threads benötigt, die dann duch den Pool recycelt werden. Das sollte reichen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: .NET und Threads

  Alt 3. Jan 2009, 10:47
Falls es darum geht, in den Threads auch State zu halten: 1000 schlafende Threads sollte jedes OS verkraften.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: .NET und Threads

  Alt 3. Jan 2009, 10:50
Ich erhöhe sein Limit mal auf 5000 Threads.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: .NET und Threads

  Alt 3. Jan 2009, 10:57
(Wessen^^)

1000 sind natürlich keine Obergrenze. Ich merke auch bei 10k Threads, die sich alle 100ms schlafen legen (damit der Scheduler immer zu arbeiten hat) nichts von der zusätzlichen Last.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: .NET und Threads

  Alt 3. Jan 2009, 11:03
Hmm, was passiert, wenn während der 100ms Daten ankommen? Die müssten ja verarbeitet werden, ohne Wartezeit.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: .NET und Threads

  Alt 3. Jan 2009, 11:05
Die 100ms sind ja gerade die simulierte Wartezeit auf die Daten
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: .NET und Threads

  Alt 3. Jan 2009, 11:07
Gehen wir mal von einem "extrem-Fall" aus. Es sind 5000 clients verbunden, alle senden alle 10ms Daten, die muss der Server verarbeiten und wieder an alle zurücksenden. Ich finde, dass das ein bisschen viel für ne Maschine sein wird.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#10

Re: .NET und Threads

  Alt 3. Jan 2009, 11:09
Das natürlich, aber die Rede war ja sowieso nur von 500 bis 1000 Clients. Und wenn man davon ausgeht, dass dafür ein Server bereitsteht, der für derartige Dinge explizit ausgelegt ist, dann wird der auch bei 2000 daueraktiven Clients wohl nicht in die Knie gehen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz