oracle的cv函数,cv_wait 和 cv_timedwait 函数
cv_wait() 和 cv_timedwait() 函数
如果使用 cv_wait(9F) 根据某个条件将线程阻塞,但该条件不发生,则该线程将永远等待。要避免这种情况,请使用 cv_timedwait(9F),它取决于执行唤醒的其他线程。cv_timedwait() 采取绝对等待时间作为参数。如果时间已到但未发生事件,则 cv_timedwait() 将返回 -1。如果满足条件,则 cv_timedwait() 将返回一个正值。
cv_timedwait(9F) 要求自上次重新引导系统以来的绝对等待时间(以时钟周期表示)。通过使用 ddi_get_lbolt(9F) 检索当前值可确定该等待时间。驱动程序通常具有的是最大等待秒数或微秒数,因此需要使用 drv_usectohz(9F) 将该值转换为时钟周期,然后与 ddi_get_lbolt(9F) 的值相加。
以下示例说明如何使用 cv_timedwait(9F) 最多等待五秒钟便访问设备,然后向调用方返回 EIO。示例 3-2使用 cv_timedwait()clock_t cur_ticks, to;
mutex_enter(&xsp->mu);
while (xsp->busy) {
cur_ticks = ddi_get_lbolt();
to = cur_ticks + drv_usectohz(5000000); /* 5 seconds from now */
if (cv_timedwait(&xsp->cv, &xsp->mu, to) == -1) {
/*
* The timeout time 'to' was reached without the
* condition being signaled.
*/
/* tidy up and exit */
mutex_exit(&xsp->mu);
return (EIO);
}
}
xsp->busy = 1;
mutex_exit(&xsp->mu);
虽然设备驱动程序写入器通常首选使用 cv_timedwait(9F) 而不是 cv_wait(9F),但是有时选用 cv_wait(9F) 会更好。例如,如果驱动程序基于以下条件等待,则使用 cv_wait(9F) 更合适:内部驱动程序状态发生变化,在此情况下状态变化可能要求执行一些命令或设置要经过的时间
驱动程序的某些部分必须单线程执行
已在管理可能超时的情况,如 "A" 取决于 "B",同时 "B" 使用 cv_timedwait(9F)
oracle的cv函数,cv_wait 和 cv_timedwait 函数相关推荐
- oracle的高级分组函数,group by 高级函数使用
在使用group by常用的基本函数包括min,max,avg,sum,count等,除了基本函数oracle中提供了一些高级分组函数, Rollup,Cube,Grouping,Grouping s ...
- oracle中的NVL,NVL2,NULLIF,COALESCE函数使用
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...
- Oracle从零开始04——SQL语句03——单行函数
5.单行函数 function_name(column|expression,[arg1,arg2,-]) 参数说明:function_name:函数名称 column:数据库列名 expressio ...
- oracle函数大全-字符串处理函数
2019独角兽企业重金招聘Python工程师标准>>> 这些函数全都接收的是字符族类型的参数(CHR 除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型 ...
- oracle字符串使用函数,oracle函数大全-字符串处理函数
字符函数--返回字符值 这些函数全都接收的是字符族类型的参数(CHR 除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类 ...
- oracle8i substr,Oracle中的INSTR,NVL和SUBSTR函数的用法详解
Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 例如:INSTR ...
- oracle stdevp函数,ORACLE 系统函数与SQLSERVER系统函数的区别是什么
ORACLE 系统函数与SQLSERVER系统函数的区别是什么 发布时间:2021-03-17 14:40:36 来源:亿速云 阅读:57 作者:Leah 栏目:数据库 这篇文章给大家介绍ORACLE ...
- Oracle提取中文字符串拼音首字母函数
通过oracle的NLSSORT函数对汉字按照拼音排序,然后根据汉字的区间返回对应的首字母. 创建函数 /* 获取拼音简码函数 */ CREATE OR REPLACE FUNCTION GET_PY ...
- MySQL里和trunc函数相同的_mysql 函数中与Oracle中ltrim函数功能相同的函数是什么函数?...
一.ANSI字符函数 字符函数用于在SQL里以不同于存储方式的格式来表示字符串. 串接就是把两个单独的字符串组合为一个. 子串的概念就是从字符串里提取一部分. TRANSLATE函数用于逐字符地把一个 ...
最新文章
- 使用 TFDConnection 的 pooled 连接池
- nf_conntrack: table full, dropping packet 解决方案
- 计算机反面的考研专业,2018计算机考研:历年准考证打印常见七大问题
- WORD2007中无法插入CMG文件
- Swift学习字符串、数组、字典
- 06_jQuery_内容过滤
- SQL中DATEADD和DATEDIFF的用法
- 8.霍夫变换:线条——动手编码、霍夫演示_4
- 基于表征(Representation)的文本匹配、信息检索、向量召回的方法总结
- 电脑护眼设置_99%的人一直坚持着错误的护眼方式!
- 15款优雅的 WordPress 电子商务网站主题
- (好文章搬个砖)MySQL索引背后的数据结构及算法原理
- Unity 使用ParticleSystem.Simulate让粒子播放不受时间缩放影响和ParticleSystem.Simulate详解
- 3行代码实现单片机AD采样功能
- MultipartFile transferTo() FileNotFound 拒绝访问
- “工欲善其事,必先利其器”-- 教你几招如何选择合适的数据可视化工具
- ICCV2021 | TransFER:使用Transformer学习关系感知的面部表情表征
- NUMERIC和DECIMAL区别
- 浏览器配置存在问题。。360断网急救箱未能修复
- 中国苹果树苗市场产量需求与投资收益预测报告2022-2028年
热门文章
- python网络编程:UDP方式传输数据
- 新海诚没有参与制作的作品_新海诚作品不出真人版,其实都是因为这!
- php ajax 点击后刷新当前页面,ajax请求值后返回会刷新页面?
- ubuntu 16.04 更换国内源(下载源)(阿里源)(换源)
- 用Python对数学函数进行求值、求偏导
- php代码在线快速生成,PHPGEN在线代码生成器
- php画中画,画中画功能 怎么将两个视频叠加播放,制作成画中画效果
- MAT分析器查看jvm dump文件
- centos7安装Metricbeat7.6.0采集nginx指标
- wegame饥荒一直连接中_腾讯WeGame注册用户超3亿 国产游戏销量超500万