gpt4 book ai didi

java - 当多个线程在同一个 MulticastSocket 上写入时,我是否需要进行某种互斥?

转载 作者:行者123 更新时间:2023-11-30 09:59:50 25 4
gpt4 key购买 nike

我有一些线程在同一个 MulticastSocket 上写入(取决于调度,可能会发生多于一个线程同时在 MulticastSocket 上写入)。我是否必须通过使用某种形式的锁定让他们在每个计时器上写入一个,或者 UDP 协议(protocol)隐式地执行此操作?

最佳答案

它实际上与 UDP 没有任何关系。 documentation for MulticastSocket没有说它是线程安全的,所以你不能假设它是线程安全的。您不知道它不会更新内部结构(例如出站缓冲区),这些结构可能会被同时访问损坏。

如果所有线程都使用相同的 MulticastSaocket 实例,您需要确保它们不会同时调用其方法。您可以通过在实例上同步来轻松做到这一点:

synchronized (theSocket) {
theSocket.send(/*...*/);
}

关于java - 当多个线程在同一个 MulticastSocket 上写入时,我是否需要进行某种互斥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58555851/

25 4 0