254 Threads sind nicht sinnvoll, wenn man sich überlegt wieviele davon wirklich gleichzeitig laufen könnten, im besten Falle.
soll ich dir das jetzt wirklich erklären ?
mich kümmert es wenig das du MOD bist ... aber scheinbar hast du hier in diesem punkt nicht das nötige hintergrundwissen welches ich dir erläutern möchte um dir zu zeigen das MEHR threads durchaus auch sinnvoller ist
beschäftigen wir uns erstmal mit den basics
MutliTasking MultiThreading sowie dem wohl eher unbekanterem MultiPreccesing
MultiTasking : das OS oder besser gesagt dessen kernel ist in der lage mehrere Tasks scheinbar gleichzeitig auszuführen
die wirklichkeit sieht aber anders aus : das kernel ist der einzige Task der physisch läuft ... über diesen einen Task werden nun die anderen ausgeführt ... also so das die Tasks durch das kernel in den CPU-core gelangen ...
um das ganze jetzt aber scheinbar gleichzeitig auszuführen schaltet das kernel durch die einzelnen Tasks in einer sehr hohen geschwindigkeit durch ...
hier besteht zwar die möglichkeit das mehrere programme scheinbar gleichzeitig laufen können ... aber jeder Task immer noch auf je einen Thread beschränkt ist
MultiThreading : baut auf MultiTasking auf ... einzige erweiterung hier ist das während durch die Tasks geschaltet wird auch immer wieder andere Threads an die reihe kommen ... so kommt es vor das manchmal ein und der selbe Thread öfter hinter ein ander ausgewählt wird und andere warten müssen ... aber auch das irgendwann mal so geschaltet wird das mehrere Threads gleich oft drankommen ... dass ganze ist n ziemlich schwieriger haufen rechnerei ...
MultiProcessing : wurde erst mit der erfindung der mehr-Kern-CPUs möglich ... hierbei werden in einem Taktzyklus in der entsprechenden anzahl kerne nun erstmals wirklich real gleichzeitig unterschiedliche prozesses verarbeitet ...
hierbei kann es vorkommen das nun zufällig von einem programm mehrere Threads gleichzeitig in den stacks liegen oder eben halt andere prozesse ...
an dieser erklärung kann man sich sehr einfach ableiten das man mit zunehmender anzahl an Threads immer weniger zeit braucht
kleines rechenbeispiel
du hast 10 Threads die einen stack von sagen wir mal 200 aufgaben abzuarbeiten haben ...nun musst du schön geduldig abwarten bis einer dieser 10 Threads seine aufgabe erledigt hat und nun die nächste in angriff nimmt ...
die effektive zeit die dabei eine aufgabe im cpu verbringt ist ziemlich hoch da es auch mal vorkommen kann das der ein oder andere thread sehr selten an die reihe kommt ... in dieser zeit allerdings nicht die anderen 9 öfter drin sind sondern auch Threads von anderen programmen ... heißt also das es auch mal vorkommen kann das eine größere anzahl der Threads selten dran kommt ...
nun musst du also schön warten bis die Threads der ihre aufgaben in langer mühseliger wartezeit beendet haben ...
erhöst du nun die anzahl der Threads auf sagen wir mal 100 ... erhöchst du damit die warscheinlichkeit das in der zeit wo ein Thread pause schiebt ein anderer Thread des selben programmes an die reihe kommt ... du also in der zeit wo eine aufgabe wartet nicht auf einen anderen prozess wartest sondern viel eher auf eine andere rechnung im stack
dadurch ist dann das programm viel eher mit seinen 200 aufgaben fertig da die effektiv genutzte cpu-zeit stärker ausgelastet wird ... du also viel öfter mit den Threads deine Prozesses an die reihe kommst als wenn du nur 10 Threads nutzt
erhöst du nun die anzahl der Threads auf das maximum der größe des stacks ... so arbeitest du ab effektivsten *und damit verbunden auch am schnellsten* ... grund ist das du damit die warscheinlichkeit das einer deiner Threads im cpu-core ist und nich der Thread eines anderen Prozesses maximiert hast ...
und nun möchte ich mal von dir so ausführlich erklärt haben warum das alles hier falsch sein sollte und es besser ist weniger Threads mit mehr aufgaben vollzustopfen anstatt diese auf eine größere anzahl Threads zu verteilen ...
in diesem sinne