Semaphore的理解

 var s:semaphore(:1)

procedure P(i:integer)

begin

   repeat

wait(s)//减1操作

临界区

singal(s)//加1操作

其他操作

forever

end

当第P1访问时首先Wait操作,做-1操作conut为0,不小于0不用进入阻塞队列,进入临界区操作,P2进入时同样-1,count变为-1,小于进入阻塞队列,P3来时count变为-2,当P1使用完临界区时候,做singal操作+1country变为-1,小于0,从阻塞队列中拿出P2进入临界区。队列中还有P3一个进程在阻塞。

信号量分为:互斥信号量和资源信号量

互斥信号量常用于申请或释放资源的使用权,常初始化为1.

资源信号量用于申请或归还资源,可以初始化为大于1的正整数,表示系统中某类资源的可用个数。

wait操作作用于申请资源,进程执行wait语句时,可能会阻塞自己。

singal操作用于释放资源,进程执行singal原语时,有责任唤醒另一个进程。

转载于:https://www.cnblogs.com/lovezhangyu/p/3403910.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值