Linux驱动设计——阻塞和同步
阻塞和非阻塞是设备访问的两种基本方式,阻塞和非阻塞驱动程序使用时,经常会用到等待队列。
阻塞和非阻塞
阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有得到结果之后才会返回。而对于同步调用来说,许多时候当前线程还是激活的,只是逻辑上当前函数没有返回而已。
非阻塞指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
完整实例程序分析
等待队列
等待队列机制使等待的进程暂时睡眠,当等待的信号到来时,便唤醒等待队列中进程继续执行。
等待队列的基本数据结构是一个双向链表,这个链表可以存储睡眠的进程。等待队列也与进程调度机制紧密结合,能够实现内核中异步事件通知机制。
等待队列在中断处理、进程同步、定时等场合有重要的用处。
等待队列的实现
等待队列的使用
- 定义和初始化等待队列头
- 定义等待队列
- 添加和移除等待队列
- 等待事件
- 唤醒等待队列
使用等待队列实现同步机制
To be continue...
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。