Linux内核中等待队列的几种用法
2015-06-18 16:07
711 查看
1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变为真)
2. 手工休眠方式一:
1)建立并初始化一个等待队列项 DEFINE_WAIT(my_wait) <==> wait_queue_t my_wait; init_wait(&my_wait); 2)将等待队列项添加到等待队列头中,并设置进程的状态 prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *wait, int state) 3)调用schedule(),告诉内核调度别的进程运行 4)schedule返回,完成后续清理工作 finish_wait()
3. 手工休眠方式二:
1)建立并初始化一个等待队列项: DEFINE_WAIT(my_wait) <==> wait_queue_t my_wait; init_wait(&my_wait); 2)将等待队列项添加到等待队列头中: add_wait_queue 3)设置进程状态 __set_current_status(TASK_INTERRUPTIBLE); 4)schedule() 5)将等待队列项从等待队列中移除 remove_wait_queue()其实,这种休眠方式相当于把手工休眠方式一中的第二步prepare_to_wait拆成两步做了,即prepare_to_wait <====>add_wait_queue + __set_current_status,其他都是一样的。
相关文章推荐
- Linux常用命令大全
- 【Linux&C++】Linux环境下C++编程
- Hive安装
- linux下日期表示法~
- Linux下用C语言检查指定程序名的运行实例个数
- linux和window下生成任意大小的文件
- Linux下用 select 函数实现定时器
- Linux如何使用命令释放内存保证系统的正常使用
- linux 命令查看一个进程占用的cpu
- linux命令九:grep
- Linux环境下段错误的产生原因及调试方法小结
- centos7.0 没有netstat 命令问题
- centos7.0 没有netstat 命令问题
- arm-linux-gdb 环境搭建及调试core文件
- Linux通过命令行发邮件使用sendmail函数、mail函数
- CentOS-7下安装MySQL5.6.22
- linux 命令之 crontab
- Linux系统如何防止CC攻击避免网页卡顿
- linux环境下python 库模块安装
- centos安装配置lnmp