同时使用`io_uring`等待许多事情

主要观点:系统编程中常需等待某事发生,如等待数据通过套接字或等待锁,也常需等待多个条件变真,如 Web 服务器需同时处理多个套接字等待读写。Linux 中之前无通用框架可等待多个任意事件,现在有io_uring。通常通过系统调用等待,如readnanosleep等,很多场景需同时等待多个事件,很多“等待”系统调用可基于文件描述符,如epoll_wait,但futex等待不属于文件描述符范畴,通过文件描述符等待futex不可行,io_uring可在用户空间和内核间设置两个队列,提交并等待多个请求完成,能复用io_uring支持的任何 Linux 等待任务,最近还添加了对futex的支持,可创建通用异步框架,代码类似阻塞系统调用但通过io_uring提交完成动作,并发原语可基于futex等构建。
关键信息:系统编程中的等待需求,io_uring的作用及优势,各种系统调用及futex的特点。
重要细节:列举了多种系统调用如readnanosleep等的等待功能,提到epoll_wait可处理多个文件描述符,futex是 Linux 内核的基础并发原语,io_uring可提交和等待多个请求,最近添加对futex支持等。

阅读 8
0 条评论