我想为我的socket使用C#异步io模型。我有多个 需要通过套接字发送的线程。处理这个问题的最佳方法是什么? 一个N个插座池,通过锁控制访问?或者asynch发送线程安全 多个线程访问单个套接字?
谢谢!
亚茨科
答案 0 :(得分:2)
异步方法已经创建了新的线程来发送数据。这可能会给您的应用程序增加不必要的开销。如果您已经有多个线程,则可以创建一个IDispoable类型的对象来表示对套接字的访问,以及一个管理器来控制套接字的签入和签出。当调用IDisposable dispose方法时,套接字将自行检查。这样您就可以控制线程在套接字上可以执行的方法。 如果套接字已经被另一个线程检出,那么管理器只会阻塞直到它可用。
using (SharedSocket socket = SocketManager.GetSocket())
{
//do things with socket
}
答案 1 :(得分:1)
System.Threading.Semaphore
在同步和比赛条件方面变得非常方便