我打算使用一个实例DatagramSocket
并从不同的线程调用它的发送方法......将UDP数据包发送到不同的客户端。方法线程安全吗,即从不同线程调用此方法不会产生任何麻烦/不一致/竞争条件?
谢谢!
我打算使用一个实例DatagramSocket
并从不同的线程调用它的发送方法......将UDP数据包发送到不同的客户端。方法线程安全吗,即从不同线程调用此方法不会产生任何麻烦/不一致/竞争条件?
谢谢!
是的。这只是本机操作系统上的一个薄层,它是线程安全的。
见这里http://www.velocityreviews.com/forums/t150685-is-datagramsocket-thread-safe.html
UDP 保证数据报完好无损(如果有的话)。换句话说,即使发送方存在多线程,也不可能存在交错。这就是你所需要的。您实际上并不需要线程安全。然而,C send() 系统调用是线程安全的,就像所有系统调用一样,因为它们是原子的。
答案是肯定的,原生操作系统上的层是线程安全的。
但是,由于网络吞吐量是有限的,如果您发送的数据包超出网络的处理能力,一些数据包将被丢弃。