linux驱动开发_阻塞与非阻塞

阻塞与非阻塞概念

在阻塞访问时,不能获取资源的进程将进入休眠,它将CPU资源“礼让"给其他进程。因为阻塞的进程会进入休眠状态,所以必须确保有一个地方能够唤醒休眠的进程,否则,进程就真的“寿终正寝”了。唤醒进程的地方最大可能发生在中断里面,因为在硬件资源获得的同时往往伴随着一个中断。

非阻塞的进程则不断尝试,直到可以进行I/O。

相关概图

在这里插入图片描述
在这里插入图片描述

用户空间阻塞与非阻塞读写示例

阻塞访问:
在这里插入图片描述非阻塞访问:
在这里插入图片描述除了在打开文件时可以指定阻塞还是非阻塞方式以外,在文件打开后,也可以通过ioctl ()和fcntl ()改变读写的方式,如从阻塞变更为非阻塞或者从非阻塞变更为阻塞。例如,调用fcntl (fd,F_SETFL,O_NONBLOCK)可以设置fd对应的I/O为非阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值