蜗牛哒哒

LINUX教程-LINUX编程-等待队列

作者: 蜗牛哒哒 发布时间: 2020-12-19 150 人阅读

进程状态
TASK_RUNNING
TASK_INTERRUPTIBLE
TASK_UNINTERRUPTIBLE
TASK_ZOMBIE
TASK_STOPPED

当进程处于TASK_INTERRUPTIBLE 或TASK_UNINTERRUPTIBLE 状态时,称进程睡眠(进程阻塞)。
等待队列
Linux驱动程序设计中,可以使用等待队列来实现进程的阻塞,等待队列可看作保存进程的容器,在阻塞进程时,将进程放入等待队列,当唤醒进程时,从等待等列中取出进程。
Linux 2.4内核提供了如下关于等待队列的操作:
1、定义等待队列
wait_queue_head_t my_queue;
2、初始化等待队列
init_waitqueue_head(&my_queue);
3、定义并初始化等待队列
DECLARE_WAIT_QUEUE_HEAD(my_queue);

4、让进程在等待队列中睡眠
sleep_on(wait_queue_head_t *q)
把进程的状态设置TASK_UNINTERRUPTIBLE,并把它放入等待队列q的头部。

interruptible_sleep_on(wait_queue_head_t *q)
把进程的状态设置TASK_INTERRUPTIBLE,并把它放入等待队列q的头部。
5、从等待队列中唤醒进程
wake_up(wait_queue_head_t *q)
从等待队列q中唤醒状态为
TASK_UNINTERRUPTIBLE 和 TASK_INTERRUPTIBLE
的所有进程。
wake_up_interruptible(wait_queue_head_t *q)
从等待队列q中唤醒状态为TASK_INTERRUPTIBLE 的进程。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.本站所有资源不保证完整性,仅供参考学习!
3. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
4. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
5. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
6. 如有链接无法下载、失效或广告,请联系管理员处理!
7. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
8. 如遇到加密压缩包,默认解压密码为"woniudada",如遇到无法解压的请联系管理员处理!
蜗牛哒哒 » LINUX教程-LINUX编程-等待队列