信号量函数sem.c

来源:华强电子网

作者:华仔

浏览:148

时间:2016-08-10 14:18

标签:

摘要:

;;; MantisOS中下信号量函数sem.c,主要调用了Linux底层的AD736JN信号量函数接口semaphore.c来控制多线程环境中共享资源的计数器。;;; 信号量是在多线程环境中共享资源的计数器。对信号量的基本操作无非有3个:对信号量的增加;然后阻塞线程等待,直到信号量不为空才返回;对信号量的减少。在编程中,信号量最常用的方式就是一个线程A使用sem_wait阻塞,因为此时信号量计数

;;; MantisOS中下信号量函数sem.c,主要调用了Linux底层的AD736JN信号量函数接口semaphore.c来控制多线程环境中共享资源的计数器。;;; 信号量是在多线程环境中共享资源的计数器。对信号量的基本操作无非有3个:对信号量的增加;然后阻塞线程等待,直到信号量不为空才返回;对信号量的减少。在编程中,信号量最常用的方式就是一个线程A使用sem_wait阻塞,因为此时信号量计数为O,直到另外一个线程B发出信号post后,信号量计数加1,此时,线程A得到了信号,信号量的计数为1不为空,所就从sem_wait返回,然后信号量的计数又减1变为零。在使用信号量之前,必须对信号量进行初始化。第三个参数通常设置零,初始化信号的计数为0,这样第一次伎用sem_wait时会因为信号计数为O而等待,直到在其他地方信号量post才返回(除非用户明白自己在干什么,否则不要将第三个参数设置为大于0的数)。第二个参数是用在进程之间的数据共享标志,如果仅仅使用在当前进程中,设置为0。如果要在多个进程之间使用该信号,设置为非零。但是在Linux线程中,暂时还不支持进程之间的信号共享,所以第二个参数必须设置为0。当信号的计数为零时,sem_wait将休眠挂起当前调用线程,直到信号量计数不为零。在sem_wait返回后信号量计数将自动减1。解除信号量等待限制。让信号量计数加1,该函数会立即返回不等待。现在sem_post被POSIX所规范,当它改变信号量计数器值时是线程安全的。

;;; 当semjnit失败时,常见错误有:第三个参数value值超过了系统能够承受的最大值SEM_VALUE_MAX;将第二参数设置为非零,如果是Linux系统,则将第二个参数设置为零。

分享到:

C语言sem Take函数,信号量函数sem.c相关推荐

  1. C语言中连续调用rand函数,返回值不变

    C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...

  2. R语言使用trimws函数:trimws函数去除(删除、remove)字符串头尾的空格

    R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格 目录 R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格

  3. R语言使用integrate函数进行函数积分计算实战

    R语言使用integrate函数进行函数积分计算实战 目录 R语言使用integrate函数进行函数积分计算实战 #自定义函数 #积分操作

  4. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图、带缺口的小提琴图、小提琴图)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图.带缺口的小提琴图.小提琴图)实战 目录 R语言使用ggplot2包geom_jit ...

  5. R语言可视化、编写自定义函数可视化水平排序条形图(horizontal bar plot)、自定义图像布局模仿经济学人杂志可视化效果、右侧添加标签数值图像方框、自定义背景色、水平条形图中间线条等

    R语言可视化.编写自定义函数可视化水平排序条形图(horizontal bar plot).自定义图像布局模仿经济学人杂志可视化效果.右侧添加标签数值图像方框.自定义背景色.水平条形图中间线条.网格线 ...

  6. R语言编写自定义描述统计计算函数、使用doBy包的summaryBy函数计算不同分组(group)的描述性统计值(Descriptive statistics by group、样本个数、均值、标准)

    R语言编写自定义描述统计计算函数.使用doBy包的summaryBy函数计算不同分组(group)的描述性统计值(Descriptive statistics by group using summa ...

  7. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(颜色配置:连续色彩、离散色彩、色彩梯度)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(颜色配置:连续色彩.离散色彩.色彩梯度)实战 目录 R语言使用ggplot2包geom_ji ...

  8. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(自定义色彩、形状)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(自定义色彩.形状)实战 目录 R语言使用ggplot2包geom_jitter()函数绘制分 ...

  9. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、形状配置)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置.形状配置)实战 目录 R语言使用ggplot2包geom_jitt ...

最新文章

  1. 【C++】多线程与异步编程【四】
  2. 百度要回归 A 股?
  3. 开源一个上架App Store的相机App
  4. access窗体中再制作查询窗体_Access
  5. jquery图片延迟加载 lazy-src
  6. 等差素数列(素数筛暴力)
  7. 时间操作(Java版)—获取给定日期N天后的日期
  8. python中stacked_python – Django管理员StackedInline定制
  9. linux ftp 警告暗号话,ssh,FTP到远程服务器时,显示自定义的警告信息
  10. 1、java 的安装及资料下载
  11. OpenCV快速入门六:图解Numpy
  12. 开发、运维、UI设计、产品经理等岗位的薪酬体系大曝光!
  13. 《Gpu Gems》《Gpu Pro》《Gpu Zen》系列读书笔记
  14. 整型常量是整数类型的数据
  15. Word 【域】学习笔记 - 图/表题注
  16. JAVA程序计算圆的周长面积
  17. 均匀分布(Uniform distribution)
  18. siliconc8051f Silicon C8051F编程器使用出错解决办法
  19. android 逐行显示 动画,在ImageView android中显示隔行扫描(逐行扫描)图像
  20. 国产化7K325T板卡学习资料: 基于国产化Ch-7K325T 的 FMC接口PCIe卡 国产化板卡

热门文章

  1. linux条件变量cond,Linux C 条件变量cond的使用记录
  2. oracle 配置不能保存,Oracle Net Manager保存网络配置提示无效条目Error writing entr
  3. iOS设备的CPU架构
  4. win7、win10系统双屏显示任务栏
  5. linux NM 命令使用介绍
  6. 影响微信公众号排名的因素
  7. VAF,MAF,肿瘤纯度,MCF,CCF的概念和计算方法 (转载)
  8. Ubuntu发烧友三部曲 进阶篇
  9. Steven Lin 林嘉澍
  10. 笔记本电脑计算机怎么放在桌面,苹果电脑怎么把文件放在桌面