我正在维护其他人的代码及其使用类UdpClient
。该代码声明一个 UdpClient
实例,并使用 UdpClient.Receive()
连续接收数据。
收到数据后,会在另一个线程中对其进行处理,并且 UdpClient
再次调用 Receive()
。在处理数据的同时,同一个客户端正在发送回响应。
问题:这是一个错误吗?我认为是这样,因为 UdpClient
不是线程安全的,所以你不能同时调用两个方法。无论如何,代码工作正常,但是......
最佳答案
事实上,某些东西不是线程安全的,并不意味着您不能通过不同的线程调用两个方法(甚至不能通过不同的线程调用一个方法),它只是意味着在设计该类时,它不是设计时考虑了线程安全,因此从您的 POV 来看,并发访问的结果是“不可预测的”。
这不是一个错误。这是一种误用。
关于.net - UdpClient同时接收和发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689919/