c#由多个线程访问的异步套接字

时间:2010-12-05 16:09:48

标签: c# multithreading sockets asynchronous thread-safety

我想为我的socket使用C#异步io模型。我有多个 需要通过套接字发送的线程。处理这个问题的最佳方法是什么? 一个N个插座池,通过锁控制访问?或者asynch发送线程安全 多个线程访问单个套接字?

谢谢!

亚茨科

2 个答案:

答案 0 :(得分:2)

异步方法已经创建了新的线程来发送数据。这可能会给您的应用程序增加不必要的开销。如果您已经有多个线程,则可以创建一个IDispoable类型的对象来表示对套接字的访问,以及一个管理器来控制套接字的签入和签出。当调用IDisposable dispose方法时,套接字将自行检查。这样您就可以控制线程在套接字上可以执行的方法。 如果套接字已经被另一个线程检出,那么管理器只会阻塞直到它可用。

using (SharedSocket socket = SocketManager.GetSocket())
{
    //do things with socket
}

答案 1 :(得分:1)

System.Threading.Semaphore在同步和比赛条件方面变得非常方便

相关问题