我计划使用一个
DatagramSocket
实例,并从不同的线程调用其send方法,向不同的客户端发送UDP数据包。该方法是否是线程安全的,即从不同的线程调用此方法不会创建任何问题/不一致性/竞争条件?谢谢!DatagramSocket
实例,并从不同的线程调用其send方法,向不同的客户端发送UDP数据包。该方法是否是线程安全的,即从不同的线程调用此方法不会创建任何问题/不一致性/竞争条件?谢谢!是的。这只是本地操作系统上的一个薄层,它是线程安全的。
请参见此处:http://www.velocityreviews.com/forums/t150685-is-datagramsocket-thread-safe.html
UDP保证数据报能够完整地到达(如果它们到达的话)。换句话说,即使发送者存在多线程,也不会出现交错。这就是你所需要的。你实际上并不需要线程安全。但是,像所有系统调用一样,C send()系统调用是线程安全的,因为它们是原子操作。