Seite 1 von 1

socket.socket thread-sicher?

Verfasst: Freitag 29. April 2016, 15:52
von Üpsilon
Hallo. In meiner neuesten Kreation, einem Chatserver, gibts mehrere Thräds, die auf die selben socket.socket-s zugreifen (ein Thräd sendet, der andere empfängt). Obwohl ich für die Sockets keine threading.Lock-s habe, ist der Server mir bis jetzt noch nicht um die Ohren geflogen. War das nur Glück und ich sollte das mit den Locks nachholen oder kann ich das so lassen und mich darauf verlassen, dass sowas immer funktioniert?

Re: socket.socket thread-sicher?

Verfasst: Freitag 29. April 2016, 16:01
von DasIch
Das funktioniert.

Re: socket.socket thread-sicher?

Verfasst: Samstag 30. April 2016, 14:20
von Üpsilon
Schön.

Re: socket.socket thread-sicher?

Verfasst: Samstag 30. April 2016, 20:39
von snafu
Üpsilon hat geschrieben:ein Thräd sendet, der andere empfängt
Die Konstellation ist sowohl unter Windows als auch unter Linux und einigen andern Betriebssystemen threadsicher. Die Threadsicherheit der jeweiligen Socket-API wird vom jeweiligen OS garantiert. Sowohl `send()` als auch `recv()` sind dort atomare Operationen, d.h. die würden blocken, falls zwei Threads gleichzeitig auf dem Socket operieren wollen, bis die Operation des ersten Threads beendet wurde.