(Zuletzt bearbeitet am von yvie.8560)
Stapelung von Gegenständen in der Gildenbank
Stapelung von Gegenständen in der Gildenbank
in Bugs: Spiel, Forum, Webseite
Posted by: Cidhappens.4086
Hmmm… so nervig ist es gar nicht (1) und es verhindert Fehler, die auftreten könnten und die man dann irgendwie behandeln müsste…
(1) wenn man von “panischen Schreien” im TS/Mumble absieht, wenn ein anderer das Item auch haben wollte und nicht dran denkt, dass sich die Items gleich noch vermehren könnten…
und natürlich den ganzen Logeinträgen… User 1 nimmt 2 Farben… User 1 packt 4 Farben zurück…
wenn Anet das “direkte Stapeln” erlaubt, müssten viele Kleinigkeiten beachtet werden… vor allem Replika-Bug muss ausgeschlossen werden (z.B. in Form von 5 Items drin, User 1 nimmt 4 raus, User 2 nimmt 3 raus, Server sagt, dass es ok ist, weil ja keiner der beiden mehr als 5 genommen hat und setzt die Anzahl des Stapels auf 1 oder 2 – je nachdem welcher Thread zuletzt dran war…
gleiches gilt auch beim Ablegen…
User 1 lagert ein Item ein, User 2 lagert ein anderes Item an die gleiche (freie) Stelle ein… das Item von User 1 wird überschrieben…
Stapel mit 5 Runen, User 1 packt 1 Rune auf den Stapel, User 2 legt auch eine Rune auf den gleichen Stapel, Server bearbeitet beide Threads parallel —> Stapel mit 6 Runen, da beide Threads 5+1 = 6 berechnet haben… viel schlimmer kann es mit 5, 200 und 1 Rune enden… statt 206 Runen könnten so 205 oder 6 Runen das Ergebnis sein…
und viel schlimmer könnte ein Deadlock sein… 2 User greifen zur gleichen Zeit auf die gleiche Ressource zu… Server kommt damit nicht klar… er setzt daher für beide den “exklusiven Zugriff” bis sie ihren Tausch durchgeführt haben… aber der Stapel ist für den anderen auch gesperrt, daher warten beide und der Stapel ist bis zum Serverneustart gesperrt… außer es wird eine Entfernung des Locks beim Schließen der Bank eingebaut – oder so…
da der Server mit einer recht großen Wahrscheinlichkeit mehrere Kerne hat und nutzt, müssten wirksame (=bekannte, funktionierende) “Sperren” wirkungsvoll (=richtig) integriert werden und danach (möglich nicht von Spielern) getestet werden
(wer jetzt “das geht doch gar nicht” denkt, sollte sich in Threads und Multi-Core/CPU-Systeme und Scheduling einlesen…)
Klassen: alle²
am Leveln: immer irgendwas