15 votes

Le thread DatagramSocket.send est-il sûr ?

J'ai l'intention d'utiliser une instance de DatagramSocket et appeler son envoyer à partir de différents threads... pour envoyer des paquets UDP à différents clients. La méthode est-elle thread safe, c'est-à-dire que l'appel de cette méthode à partir de différents threads ne créera pas de problème/incompatibilité/condition de course ?

Merci !

9voto

BraveNewCurrency Points 4096

Oui. Il ne s'agit que d'une fine couche sur le système d'exploitation natif, qui est threadsafe.

Voir ici http://www.velocityreviews.com/forums/t150685-is-datagramsocket-thread-safe.html

9voto

EJP Points 113412

UDP garantit que les datagrammes arrivent intacts (si tant est qu'ils le soient). En d'autres termes, il ne peut y avoir d'entrelacement même s'il y a du multithreading chez l'expéditeur. C'est tout ce dont vous avez besoin. Vous n'avez pas réellement besoin de la sécurité des fils. Cependant, l'appel système C send() est thread safe, comme tous les appels système, car ils sont atomiques.

1voto

Denis Points 300

La réponse est oui, la couche du système d'exploitation natif est thread safe.

MAIS Comme le débit du réseau est limité, si vous envoyez plus de paquets que le réseau ne peut en gérer, certains paquets seront abandonnés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X