Tom*_*led 5 .net c# multithreading udpclient thread-local
我有一个类的实例(我们称之为 A),它为一些线程提供服务,该实例仅通过 UdpClient 类发送 UDP 数据包。它在其构造函数中初始化 UdpClient,仅用于发送数据包。
它看起来像:
public class A{
private UdpClient m_Client;
public class A(string host, int port){
m_Client = new UdpClient(host, port);
}
public void Send(string dataToSend){
var data= encoding.GetBytes(dataToSend);
client.BeginSend(data, data.Length, null, null);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我知道 UdpClient 不是线程安全的(根据 MSDN 文档),不使用锁定机制支持多线程的最佳方法是什么?
在每次发送时创建 UdpClient 的新实例?(只需使用一些本地 UdpClient var)。表现?
对 UdpClient 使用 ThreadLocal?但是在这种情况下如何处置 UdpClient 呢?
还有其他解决方案吗?
最终我相信我当前的实现应该没有问题(只要 Microsoft 不会更改 UdpClient 类实现)。
对于谁来说可能会感兴趣: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/cbdd9818-00f0-499f-a935-d8e555899d64
| 归档时间: |
|
| 查看次数: |
5823 次 |
| 最近记录: |