每次调用Socket.ReceiveAsync(SocketAsyncEventArgs a)
时,都需要给它一个SocketAsyncEventArgs
对象,并分配一个缓冲区。如果您有10,000个套接字,则需要10,000个缓冲区。
如果每个缓冲区为1k,则需要10mb。如果要将每个缓冲区的容量提高到50k,则需要500mb。
如果大多数这些套接字都处于空闲状态,那么这将浪费大量内存。理想情况下,我希望能够分配一些大的缓冲区,并在套接字之间共享它们。
我认为epoll和I / O完成端口可以那样工作-使用epoll,您可以请求事件数据并将其提供给您。使用iocp(我认为),您可以给它提供一堆缓冲区,它将使用下一个可用的缓冲区。
是否可以使用SocketAsyncEventArgs
来做到这一点,还是我只能使用小型缓冲区?