最近,我使用epoll编写了一个简单的TCP服务器,但我想探索其他高性能多路复用的机制,为此我遇到了io_uring,并计划使用它来制作另一个简单的TCP服务器。
不过,我在这里看到,io_uring的条目数仅限于4096个,这似乎意味着理论上我将无法拥有更多的持久连接。
根据我的理解,通常我会使用epoll_wait()之类的东西来等待epoll事件的发生,相反,我会在io_uring中提交一个特定的请求,并在请求完成/失败时得到通知,那么这是否意味着我可以提交最多4096个read()请求?
我是误解了io_uring的用例,还是误解了如何使用它?
发布于 2020-11-22 18:38:07
在我所链接的同一份文件中,它说:
通常是一个应用程序会请求一个给定大小的环,并且假设这个大小直接对应于应用程序在内核中有多少待决请求。但是,由于sqe的生存期只是它实际提交的生命周期,所以应用程序可以驱动比SQ环大小所显示的更高的挂起请求计数。
这正是您在大量套接字上侦听消息时所做的事情--只是一次发送的提交量的上限是4096。
https://stackoverflow.com/questions/64947153
复制相似问题