Ich schreibe aktuell an einem kleinen Python Server.
Solange running = 1 wartet der Server auf eine Anfrage eines Clients (siehe Codeschnipsel).
Jetzt möchte ich, dass der Client ein Beendigungsflag an der Server schicken kann.
Hier habe ich aber ein Timingproblem, da die Serverfunktionen von einem Thread (LbServerThread)
abgehandelt wird.
Setze ich über den Thread running auf 0, so kann es vorkommen, dass das Setzen erst erfolgt,
nachdem die Serverklasse die Whileschleife bereits wieder passiert hat (zu diesem Zeitpunkt ist dass running noch 1) und schon wieder auf s.accept() wartet, was bedeutet, daß der Server erst beendet wird, sobald sich erneut ein Client am Server anmeldet.
Als alternative Lösung zum Flagsetzen habe ich in der Serverklasse eine statische Methode eingebaut, welche den Server mittels sys.exit(0) beenden soll. Wenn ich diese Methode aus dem Thread heraus jedoch aufrufe, dann passiert schlicht und einfach nichts.
Code: Alles auswählen
while (running):
con, addr = s.accept() #Warten bis ein Client eine neue Verbindung erstellen moechte
server = LbServerThread(con, addr)
server.start()
...