socket.socket thread-sicher?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

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?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das funktioniert.
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Schön.
PS: Die angebotene Summe ist beachtlich.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ü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.
Antworten