首页 > 系统服务 > 详细

Linux驱动设计——阻塞和同步

时间:2015-04-17 22:08:11      阅读:170      评论:0      收藏:0      [点我收藏+]

阻塞和非阻塞是设备访问的两种基本方式,阻塞和非阻塞驱动程序使用时,经常会用到等待队列。

阻塞和非阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有得到结果之后才会返回。而对于同步调用来说,许多时候当前线程还是激活的,只是逻辑上当前函数没有返回而已。

非阻塞指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

完整实例程序分析

 

等待队列

等待队列机制使等待的进程暂时睡眠,当等待的信号到来时,便唤醒等待队列中进程继续执行。

等待队列的基本数据结构是一个双向链表,这个链表可以存储睡眠的进程。等待队列也与进程调度机制紧密结合,能够实现内核中异步事件通知机制。

等待队列在中断处理、进程同步、定时等场合有重要的用处。

等待队列的实现

 

等待队列的使用

  1. 定义和初始化等待队列头
  2. 定义等待队列
  3. 添加和移除等待队列
  4. 等待事件
  5. 唤醒等待队列

 

使用等待队列实现同步机制

 

 

To be continue...

Linux驱动设计——阻塞和同步

原文:http://www.cnblogs.com/kwseeker-bolgs/p/4436004.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!