Thread Frage

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hey
ich hab da mal noch eine frage:
in einem standard server code mit while true, accept(), client.close() und socket.close() ist socket.close()
nur in verbindung mit einem timeout() (oder ähnlichem) von nutzen, oder? sonst läuft doch immer accept() und
der socket bleibt sowieso geöffnet. stimmt das?
und noch eine viel wichtigere frage:
wieso kann man threads nicht komplett zerstören?
sonst kann man sich an alten serververbindungen, die schon einmal über einen thread gestartet wurden, immer wieder anmelden, obwohl die alt sind.
BlackJack

@DMD-OL: Man könnte auch eine Nachricht vorsehen die man dem Server schicken kann und die ihm sagt er soll sich beenden. Die muss nicht von einem entfernten Client kommen, sondern kann auch aus einem anderen Thread beim Server kommen. Und da die sich Daten teilen können, kann die Nachricht auch ein bei jedem Serverstart zufällig erzeugtes ”Geheimnis” enthalten, damit nicht irgendwelche Clients den Server einfach so beenden können.

Das Zerstören von Threads kann den Programmzustand zerstören. Und was nützt einem ein Programm in einem inkonsistenten Zustand‽ So etwas nicht-kooperativ sauber hinzubekommen ist halt nicht einfach. Und selbst wenn das für einen Bytecode-Interpreter vielleicht noch teilweise hinzubekommen wäre, setzt Python so einen ja nicht voraus.
Antworten