信号量通信机制

信号量通信机制主要用来实现进程的同步,防止进程并发的访问共享资源。当同步访问一个资源时,可以设置一个信号量,其初始值设可用资源的数目。每当进程想要获取资源时,都要检测相关的信号量。信号量大于0表明资源可用,当获取对资源的访问权限时,将信号量减一。为保证程序运行的正确性,对信号量的检测和减操作都必须是原子性的。如果检测到信号量值为0,则表明资源不可用看,请求进程必须等待;当一个进程结束时,对与该进程对应的信号量加一,表明此进程归还对此资源的使用。最简单的信号量为二元信号量,例如对打印机的占用,任何一个时刻只有一个进程打印文档,信号量为1代表打印机可用,为0代表不可用。

我们通常所说的创建一个信号量实际上创建了一个信号量集合,在这个信号量集合中可能会有多个信号量,表示的数据结构为:

信号量数据集合struct semid_ds : 在此数据结构中定义了整个信号量集合的基本属性,如访问的权限。

信号量struct sem{ int semval ; int sempid; } :在信号量集合中使用一个指针,指向一个由信号量组成的数组。

转载于:https://my.oschina.net/u/919373/blog/149651

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值