首页 > 其他分享 >06 休眠唤醒

06 休眠唤醒

时间:2023-03-05 13:22:33浏览次数:63  
标签:06 队列 up 休眠 唤醒 event condition

第3课.Linux异常处理体系结构
源码

编程指南

需要定义一个等待队列(DECLARE_WAITQ_UEUE_HEAD)

将wait_event线程放入queue

1.休眠唤醒

1.1 休眠函数

文件路径include\linux\wait.h

函数 说明
wait_event_interrupt(wq, condition) 休眠一直到condition为真才退出 休眠期间可以被signal打断
wait_event(wq, condition) 休眠一直到condition为真才退出
wait_event_interrupt_timeout(wq, condition, timeout) 休眠一直到condition为真或者超时才退出 休眠期间可以被signal打断
wait_event_timeout(wq, condition, timeout) 休眠一直到condition为真或者超时才退出
  • wq:等待队列。

    休眠时将程序修改为非running状态,并将其放入wq队列。唤醒时从wq队列中唤醒

  • condition

    唤醒event的的一个实现标志,为真表示唤醒休眠队列

1.2 唤醒函数

函数 说明
wake_up_interruptible(x) 唤醒x休眠队列中一个状态为TASK_INTERRUPTIBLE的线程
wake_up_interruptible_nr(x, nr) 唤醒x休眠队列中nr个状态为TASK_INTERRUPTIBLE的线程
wake_up_interruptible(x) 唤醒x队列中所有状态为TASK_INTERRUPTIBLE的线程
wake_up(x) 唤醒x队列中的一个线程
wake_up_nr(x) 唤醒x队列中的nr个线程
wake_up_nr_all(x) 唤醒x队列中的所有线程

1.3 休眠与唤醒的关系

需要注意的是wait_event事件并不是调用wake_up后就能唤醒对应的事件。

wait_event事件的唤醒条件为已下条件共同触发

  • condition为真

  • wake_up事件触发

  • timeout(可选)

标签:06,队列,up,休眠,唤醒,event,condition
From: https://www.cnblogs.com/burnk/p/17180305.html

相关文章

  • 题解 CF1406D【Three Sequences】
    看错题了,我很生气。problemYouaregivenasequenceof$n$integers$a_1,a_2,\ldots,a_n$.Youhavetoconstructtwosequencesofintegers$b$and$c......
  • HDOJ 2061-2070
    2061Treasurethenewstart,freshmen!ProblemDescriptionbackground:Anewsemestercomes,andtheHDUalsomeetsits50thbirthday.Nomatterwhat'syou......
  • 河北工程806c/c++程序设计2013年-2021年编程题
    ps:都是自己练习写的,可能不是最好的写法,但是都运行过,能跑起来。2021年1.从键盘上输入一元二次方程(ax2+bx+c=0)的系数:a,b,c;计算并输出方程的根,如果没有实根则输出“No......
  • 线程sleep休眠的应用
    packagecom.Java;importjava.text.SimpleDateFormat;importjava.util.Date;//每个对象都有一个锁sleep不会释放锁publicclassTestSleep{publicstaticvoidmai......
  • HDOJ 2051-2060
    2050BitsetProblemDescriptionGiveyouanumberonbaseten,youshouldoutputitonbasetwo.(0<n<1000) InputForeachcasethereisapostivenumbern......
  • Go组件库总结之协程睡眠唤醒
    本篇文章我们用Go封装一个利用gopark和goready实现协程睡眠唤醒的库。文章参考自:https://github.com/brewlin/net-protocol1.gopark和goready的声明//go:linknamegopark......
  • day03 打卡203.移除链表元素 707.设计链表 206.反转链表
    day03打卡203.移除链表元素707.设计链表206.反转链表203.移除链表元素203题目链接1.第一遍写的时候忘记了,先去看了代码随想录想起来了。我先写的是不需要虚拟节点的,......
  • hdu-2063 二分图
    http://acm.hdu.edu.cn/showproblem.php?pid=2063过山车TimeLimit:1000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmi......
  • 跟着廖雪峰学python 006
    ​递归函数在函数内部调用自身本身计算阶乘:deffact(n):ifn==1:return1returnn*fact(n-1)注意:使用递归函数需要防止栈溢出。在计......
  • 路飞项目day_06
    目录今日内容详细一、git多分支二、git远程仓库三、ssh方式连接远程仓库四、协同开发五、冲突解决六、线上分支合并七、远程仓库回滚今日内容详细一、git多分支#为什么......