linux system V 信号量的初步理解

几个函数:semget semop semctl

 

在几个进程间,有一个进程先用semget建立,指定大小,其他的进程用semget的时候size写0.

怎么保证几个进程都认识同样的信号量呢?

答案是在semget中第一个参数用相同的值,比如用ftok的相同的路径,得到同一个id。

 

semctl的SETVAL还是需要的,开始初始化的时候一定要,不然对未初始化的进行semop动作,会阻塞在那里的。

 

semop则是具体的PV操作了,PV在每个进程中自己定义自己的,当然一般都是-1和1.

 

目前遇到的情况就是这样子了。以后再有新的发现继续说哈。

 

------------------我是分割线--------------------

这几天找bug,证明信号量的锁是起了作用的

问题没有出在没有锁上

而是出在锁不对上

加锁是为了保证其原子操作

而明显我对原子操作的理解不够深刻

也就是说不知道什么地方应该加锁

导致了加锁的位置不对

这个需要提高意识,意识啊意识

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值