几个函数:semget semop semctl
在几个进程间,有一个进程先用semget建立,指定大小,其他的进程用semget的时候size写0.
怎么保证几个进程都认识同样的信号量呢?
答案是在semget中第一个参数用相同的值,比如用ftok的相同的路径,得到同一个id。
semctl的SETVAL还是需要的,开始初始化的时候一定要,不然对未初始化的进行semop动作,会阻塞在那里的。
semop则是具体的PV操作了,PV在每个进程中自己定义自己的,当然一般都是-1和1.
目前遇到的情况就是这样子了。以后再有新的发现继续说哈。
------------------我是分割线--------------------
这几天找bug,证明信号量的锁是起了作用的
问题没有出在没有锁上
而是出在锁不对上
加锁是为了保证其原子操作
而明显我对原子操作的理解不够深刻
也就是说不知道什么地方应该加锁
导致了加锁的位置不对
这个需要提高意识,意识啊意识