关注
在IO多路复用中使用epoll_wait等待IO事件的时候,进程会释放CPU。在Linux中,进程状态将会变成"S"(可中断睡眠状态)或"D"(不可中断睡眠状态,通常等待IO)。两个状态下,进程都不会占用CPU资源,因为它们都是不同形式的睡眠状态,CPU会切换到其他进程或线程继续工作。
"S"状态是可中断的睡眠状态,表示进程正在等待某个条件的满足或某个事件的发生。这种状态下的等待是可以被信号打断的,例如,系统调用如read()在没有数据可读时会使进程进入"S"状态,但接收到信号后,进程可以从系统调用中返回,处理信号。
"D"状态则是不可中断的睡眠状态,进程在这种状态下一般是正在等待某个硬件级别的IO操作完成,例如,等待磁盘IO或网络IO。这种状态的进程不能被信号打断,因为它们通常涉及到一些必须完成的硬件操作。
当你调用epoll_wait时,如果当前没有IO事件,进程会进入"S"状态。如果系统调用涉及到硬件级别的不可中断IO操作,进程可以进入"D"状态。这样设计是为了在IO操作期间不消耗CPU资源,同时允许其他进程或线程使用CPU。
所以,使用epoll_wait时,进程会进入睡眠状态直到事件发生,从而释放CPU。
来自 gpt4 的回答
查看原帖
10 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 腾讯音乐求职进展汇总 #
78575次浏览 442人参与
# 入职第一天,你准备什么时候下班 #
37703次浏览 241人参与
# 招行数字金融训练营 #
76091次浏览 337人参与
# 牛友故事会 #
435081次浏览 10435人参与
# 入职第四天,心情怎么样 #
22955次浏览 342人参与
# 你的办公桌上都有什么? #
3949次浏览 34人参与
# 腾讯云智研发2025实习生招聘 #
105326次浏览 1274人参与
# 阿里云工作体验 #
18073次浏览 84人参与
# 你的工资什么时候发? #
21629次浏览 175人参与
# 小红书工作体验 #
44038次浏览 394人参与
# 海康威视求职进展汇总 #
448839次浏览 3499人参与
# 硬件应届生薪资是否普遍偏低? #
64832次浏览 492人参与
# 这些公司卡简历很严格 #
22661次浏览 91人参与
# 同程旅行工作体验 #
3233次浏览 20人参与
# 职场破防瞬间 #
37347次浏览 512人参与
# 机械人,说说你的烦心事 #
54881次浏览 767人参与
# 元戎启行求职进展汇总 #
27352次浏览 205人参与
# 实习必须要去大厂吗? #
77906次浏览 1157人参与
# Offer比较,求稳定还是求发展 #
34430次浏览 201人参与
# 硬件人的春招flag #
36864次浏览 395人参与
# 米哈游工作体验 #
7828次浏览 72人参与
# TP-LINK工作体验 #
42154次浏览 806人参与