poll_wait阻塞/唤醒
来源:互联网 发布:淘宝客服周总结报告 编辑:程序博客网 时间:2024/05/22 15:12
1. 应用阻塞
应用程序使用 select() 或 poll() 调用设备驱动程序的 poll() 函数,该函数把输入输出复用处理的等待队列追加到由内核管理的进程的 poll_table()上
#include <linux/poll.h>static inline void poll_wait (struct file *filp, wait_queue_head_t *wait_address, poll_table *P);
filp:设备文件信息的 struct file 结构体的指针参数 struct file *filp
P:追加到设备驱动上的 poll_table结构体指针参数
2. 内核等待事件
/* * conditon:必须满足,否则阻塞* timeout和conditon相比,有更高优先级*/wait_event(wq, condition);wait_event_timeout(wq, condition, timeout);wait_event_interruptible(wq, condition) ;wait_event_interruptible_timeout(wq, condition, timeout) ;
3. 唤醒等待队列
//可唤醒处于TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE状态的进程#define wake_up(x) __wake_up(x, TASK_NORMAL, 1, NULL)//只能唤醒处于TASK_INTERRUPTIBLE状态的进程#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
4. schedule_timeout
表示的进程睡眠直到时间超时,函数就会立即返回
5. 信号
TASK_INTERRUPTIBLE是可以被信号和wake_up()唤醒的,当信号到来时,进程会被设置为可运行
TASK_UNINTERRUPTIBLE只能被wake_up()唤醒
信号来源:
硬件来源:(比如我们按下了键盘或者其它硬件故障)
软件来源:最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作
1 0
- poll_wait阻塞/唤醒
- 线程阻塞与唤醒
- 线程阻塞与唤醒
- Java线程唤醒与阻塞
- Java线程唤醒与阻塞
- java线程阻塞与唤醒
- 进程的阻塞与唤醒
- Java线程唤醒与阻塞
- Java线程唤醒与阻塞
- nio Selector 阻塞 唤醒 原理
- Java线程唤醒与阻塞
- AQS阻塞唤醒工具LockSupport
- 理解poll_wait
- 理解poll_wait
- 线程阻塞和唤醒(转载)
- 2多线程的阻塞、唤醒与同步
- 如何唤醒socket被阻塞的函数
- 多线程之Java线程阻塞与唤醒
- Centos下安装Scrapy
- 17. Letter Combinations of a Phone Number
- 三目运算符在C语音和C++语言中的区别
- PHP 安装包依赖关系管理工具Composer
- JAVA_构造函数重载 OverloadingConstructors.java
- poll_wait阻塞/唤醒
- C++虚函数表深入剖析
- 从C/C++到Objective-C(二)--- 面向对象
- 2016新年Bash的CVE-2014-6271漏洞修复经历
- C语言之可变参实现scanf函数
- javascript对象
- Spring+hibernate基本配置
- LeetCode Fraction to Recurring Decimal
- azure Machine learing studio 使用示例之 - 使用线性回归算法完成预测评估