Autor Beitrag
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Sa 20.02.10 13:18 
Hallo Delphianer,

Ich hab da mal ein paar fragen zur Netzwerkprogrammierung speziell mit Indy.
Und zwar habe ich mir mal das Tutorial von Narses zu gemüte gezogen (Term char protokoll) und dort werden ja die normalen Sockts verwendet.
Nun bietet Indy hat im IdTCPServer dieses sogenannte Multithreading an.
Meine Frage dazu wäre, wie ich mir das vorstellen müsste, wie das dort gehandhabt wird.
Ich hatte mir schon mal einiges zur Threadprogrammierung durchgelesen aber ich bin dann doch eher von dem Thread-Objekt überzeugt, dass das
vollkommen ausreicht für meine Zwecke.
Nun standen da auch immer Kommentare drin, wie z.B. 16 Threads für nen Single CPU ist Obergrenze.
Nun wie soll ich dass dann mit Indy verstehen, wenn da 100 User connecten und die alle nen Thread haben?!
Könnte mir vielleicht einer erklären wie ich das Handhaben muss? Vielleicht anhand eines Codebeispieles, und vorallem
wie das nun ist mit den Threads ob ich dann bei 100 User wirklich 100 Threads haben kann?

Gruß Niko
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 20.02.10 13:26 
Diese Obergrenze der Threadanzahl ist gemeint als sinnvolles Maximum an aktiven Threads. Denn bei einem Prozessor und einer größeren Anzahl rechnender Threads nimmt natürlich der Aufwand für die Verteilung der Rechnerleistung immer mehr von der eigentlichen Prozessorleistung weg.

Wenn jetzt aber 100 Benutzer verbunden sind, dann tauschen diese vermutlich nicht exakt gleichzeitig Daten aus (sonst gäbe es ja vermutlich auch ein Problem mit der Bandbreite). Und wenn dann 100 Threads existieren, aber die meisten gerade nix tun, dann geht das sehr gut.

Wie das jetzt bei Indy genau geregelt ist, weiß ich nicht.
Niko S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Sa 20.02.10 13:51 
Aber arbeitet nicht so ein Thread den code einmal durch und dann wird er wieder beendet?
Ich kann zwar noch ne Public funktion einführen, dass er nun wieder den Code ausführen soll, aber im Debugger steht ja, dass der Thread beendet wurde, d.h. es ist doch gar kein Thread mehr vorhanden und der Code wird im Main Thread ausgeführt oder irre ich mich da?