-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ConcurrentModificationException in the GameRoomManager #201
Comments
Das Problem erscheint mir, dass zwar alle einzelnen Methoden im |
Benutzt der Server denn ueberhaupt mehrere Threads? |
Naja, wahrscheinlich um mit mehreren Clients gleichzeitig kommunizieren zu können. Damit der obige Fehler passiert, muss irgendwo ein Thread die |
Ja, klingt plausibel. Dann also den GameRoomManager in einem eigenen Thread und die anderen Threads kommunizieren per message passing damit? Klingt nach einer groesseren Aenderung... |
Jup, hab ich so gedacht. Ja, das ist ne größere Änderung, aber ich weiß nicht wie man es sonst wirklich sicher machen kann. |
Vielleicht können wir da auch ein Kotlin pattern verwenden: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.channels/actor.html |
Ich bin mir nicht sicher, aber ich glaube, dass der GameRoomManager gar nicht direkt mit den Clients kommuniziert. Aber den koennten wir als Actor modellieren, ja. |
Was soll uns das sagen? Ich frage mich auch gerade, wie viel Sinn es überhaupt macht den GameManager und ClientManager von der Lobby zu separieren, weil die ja trotzdem ziemlich eng gecoupled sind. |
Ich dachte, wenn die Lobby nur einmal existiert, koennen da ja nicht mehrere Aufrufe parallel durch. Aber es geht darum, dass von mehreren Threads durchaus parallel auf die eine Lobby zugegriffen werden kann. Verstehe. Die hohe Separierung ist eine Altlast. In den meisten Faellen kann man da was zusammenlegen. |
Ein Team ist beim Trainieren ihres Clients auf einen Fehler im Server gestossen. Der Server beendet sich mit folgender Fehlermeldung:
The text was updated successfully, but these errors were encountered: