与SocketAsyncEventArgs共享缓冲区

时间:2019-02-19 05:19:23

标签: c#

每次调用Socket.ReceiveAsync(SocketAsyncEventArgs a)时,都需要给它一个SocketAsyncEventArgs对象,并分配一个缓冲区。如果您有10,000个套接字,则需要10,000个缓冲区。

如果每个缓冲区为1k,则需要10mb。如果要将每个缓冲区的容量提高到50k,则需要500mb。

如果大多数这些套接字都处于空闲状态,那么这将浪费大量内存。理想情况下,我希望能够分配一些大的缓冲区,并在套接字之间共享它们。

我认为epoll和I / O完成端口可以那样工作-使用epoll,您可以请求事件数据并将其提供给您。使用iocp(我认为),您可以给它提供一堆缓冲区,它将使用下一个可用的缓冲区。

是否可以使用SocketAsyncEventArgs来做到这一点,还是我只能使用小型缓冲区?

0 个答案:

没有答案