我最近开始编写一些使用套接字的C++代码,我希望它是异步的.我读过许多关于如何使用poll和select来使我的套接字异步(使用poll或select等待send或recv缓冲区)的帖子,但在我的服务器端我有一个struct pollfd数组,每次都有侦听套接字接受连接,它将它添加到struct pollfd数组,以便它可以监视该套接字的recv(POLLIN).
我的问题是,如果我有5000个套接字连接到我的服务器上的监听套接字,那么struct pollfd的数组大小将为5000,因为它将监视所有连接的套接字但是我知道如何检查是否一个套接字的recv已准备就绪,是通过循环遍历struct pollfd数组中的所有项来查找其revents等于POLLIN的项.这只是效率低下,当连接套接字的数量因为非常大.有一个更好的方法吗?
boost :: asio库如何处理async_accept,async_send等...?我应该怎么处理?