Advertisement

Linux服务器开发中epoll的使用:EPOLLONESHOT的作用及其应用方式;长连接与短连接的问题;粘包问题

阅读量:

EPOLLONESHOT

作用:避免竞争文件描述符(这里是网络编程,那就是避免竞争套接字);

操作提示:仅允许执行一次特定的 epoll 事件监控任务。一旦完成此次监控任务后会自动从 epoll 内核事件检测队列中移除该 fd;如需再次执行,请通过 epoll_ctl_mod 函数进行重新配置

需要注意的是,在本例中被处理的队列并未从核心事务处理列表(core transaction list)或核心事务执行列表(core transaction execution list)直接删除对应的事务或任务。

而是仅从内核事务检测队列(inner kernel transaction detection queue)进行了移除操作。

这些被处理过的事务或任务依然保留在核心事务处理列表或核心事务执行列表之中。

对于这些未关闭的socket而言,在不关闭的情况下它们仍然存在于系统空间中的socket池当中。

因此,在使用过程中应当避免关闭这些socket。

一旦决定关闭它们,则会在下次开始新进程时自动被移除出当前进程的任务列表。

例子:
服务器端代码:

复制代码
    在这里插入代码片
    
    ```cpp
    #include<sys/types.h>
    #include<s

全部评论 (0)

还没有任何评论哟~