码迷,mamicode.com
首页 > 系统相关 > 详细

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

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

标签:

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

阻塞和非阻塞

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

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

完整实例程序分析

 

等待队列

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

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

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

等待队列的实现

 

等待队列的使用

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

 

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

 

 

To be continue...

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

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!