【问题标题】:Is it safe to simultaneously send and receive udp datagrams on two separate threads using the same UdpClient? [duplicate]使用相同的 UdpClient 在两个单独的线程上同时发送和接收 udp 数据报是否安全? [复制]
【发布时间】:2018-07-25 18:48:32
【问题描述】:

在两个单独的线程上使用单个 UdpClient 实例同时从客户端接收并发送到不同的客户端是否安全?根据 MSDN 文档,这对 TcpClient 来说很好,但我不确定是否适用于 UdpClient。我在这里缩短了我的代码来理解这个想法。

void ReceiveThread () {
    while (running) {
        var payload = udpClient.Receive(ref clientEndPoint);
        QueuePayload(payload);
    }
} 

void SendThread () {
    var payload = DequeuePayload();

    while (running) {
        udpClient.Send(payload, payload.Count, client2EndPoint);
    }
}

每当我发送有效负载时,创建一个新的 UdpClient 是解决这个问题的好方法吗?有效载荷将非常频繁地发送(大约每秒 20 个)。

【问题讨论】:

    标签: c# networking


    【解决方案1】:

    没有。微软的标准文档简介说

    这种类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-05
      • 2018-12-23
      • 1970-01-01
      • 2016-01-23
      • 2016-02-19
      • 2017-10-25
      • 2013-11-19
      • 2010-10-15
      相关资源
      最近更新 更多