15

我打算使用一个实例DatagramSocket并从不同的线程调用它的发送方法......将UDP数据包发送到不同的客户端。方法线程安全吗,即从不同线程调用此方法不会产生任何麻烦/不一致/竞争条件?

谢谢!

4

3 回答 3

9

是的。这只是本机操作系统上的一个薄层,它是线程安全的。

见这里http://www.velocityreviews.com/forums/t150685-is-datagramsocket-thread-safe.html

于 2013-05-11T14:42:44.830 回答
8

UDP 保证数据报完好无损(如果有的话)。换句话说,即使发送方存在多线程,也不可能存在交错。这就是你所需要的。您实际上并不需要线程安全。然而,C send() 系统调用是线程安全的,就像所有系统调用一样,因为它们是原子的。

于 2013-05-12T00:50:59.120 回答
0

答案是肯定的,原生操作系统上的层是线程安全的。

但是,由于网络吞吐量是有限的,如果您发送的数据包超出网络的处理能力,一些数据包将被丢弃。

于 2021-09-15T14:59:55.393 回答