1 Star 0 Fork 0

huyi / TechCPP

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
selectpollepoll分别讲讲.md 1.53 KB
一键复制 编辑 原始数据 按行查看 历史
葛昆仑 提交于 2024-03-04 12:42 . update:19 articles
  1. select
    • select是最早的多路复用IO模型之一,通过select系统调用可以同时监视多个文件描述符的IO事件。
    • 在使用select时,需要将需要监视的文件描述符加入到一个文件描述符集合中,并指定监视的IO事件类型(读、写、异常等)。
    • select会阻塞当前进程,直到有文件描述符就绪或超时等事件发生,然后返回就绪文件描述符的数量,应用程序需要遍历就绪文件描述符进行处理。
  2. poll
    • poll是对select的改进,在Linux系统中更常见,也可以同时监视多个文件描述符的IO事件。
    • 使用poll时,将需要监视的文件描述符加入到pollfd结构体数组中,并指定监视的IO事件类型。
    • poll调用会阻塞当前进程,直到有文件描述符就绪或超时等事件发生,然后返回就绪文件描述符的数量,应用程序需要遍历就绪文件描述符进行处理。
  3. epoll
    • epoll是Linux特有的高性能IO多路复用机制,相比select和poll具有更好的性能。
    • epoll使用基于事件驱动的方式,通过epoll_create创建一个epoll句柄,将需要监听的文件描述符加入到epoll句柄中。
    • 当有IO事件发生时,epoll_wait系统调用不会阻塞整个进程,而是立即返回就绪的文件描述符列表,应用程序只需处理这些就绪文件描述符。
    • epoll还支持边缘触发(EPOLLET)和水平触发(EPOLLONESHOT)两种工作模式,可以进一步提高IO效率。
1
https://gitee.com/hylhm/TechCPP.git
git@gitee.com:hylhm/TechCPP.git
hylhm
TechCPP
TechCPP
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891