Ja, gibt es. Du machst einige Workerthreads, und sammelst in einer Queue die Arbeitspakete. Die Arbeitspakete beinhalten die Information zu welchen User sie gehören. Dadurch solltest du noch immer alles machen können, belegst aber für einen user der nichts zu tun hat keinen Thread.
Ach kannst du wenn du mehr last hast, die Arbeit auf meherer Systeme verteilen.
Naja prinzipiell ist das keine eigenen Technik oder ein eigenes Framewrork, sonder es ist eine Design- / Architekturentscheidung deinerseits.
Du hast geschrieben, dass du für jeden User einen eigenen Thread machen möchtest. Wie würdest du denn nun diesen Threads die Aufgaben die für einen User hereinkommen übergeben?
Wie findest du von der Rest API den richtigen Thread?
Wenn du das kurz beschreibst, dann könnten wir dir sagen wie du das vl umstellen kannst.
Was diese lesen, Verarbeiten und schreiben ist dir überlassen. Ein super Konzept, wie ich finde. Mit entsprechender protokollierung und alles,w as man für Enterprise Anwendungen braucht.
Wenn du sowas wie “leichtgewichtige Threads” brauchst, ist das Stichwort “Fiber”. Es gibt mehrere Bibliotheken dafür, z.B. Loom oder Quasar. Habe ich aber noch nicht ausprobiert.
Wie gesagt, ich habe noch nicht mit quasar gearbeitet.
Die Doc sagt, dass man den DefaultFiberScheduler verwendet, wenn kein eigener gesetzt wird. Dort kann man die Zahl der Threads angeben, default ist die Anzahl der Cores: