当前位置: 技术问答>linux和unix
互斥量的问题
来源: 互联网 发布时间:2016-12-27
本文导语: 互斥量的值可以为负值表示什么意思 | 操作系统的p v 操作没有看? 每一个要想使用数据的线程/进程 首先第一步要进行P操作, 计数器就会-1 , 如果计数器大于等于0 就提到数据并操...
互斥量的值可以为负值表示什么意思
|
操作系统的p v 操作没有看?
每一个要想使用数据的线程/进程 首先第一步要进行P操作, 计数器就会-1 , 如果计数器大于等于0 就提到数据并操作. 然后v操作. 计数器+1
如果前面计数器小于0, 则退出或者挂起.
每一个要想使用数据的线程/进程 首先第一步要进行P操作, 计数器就会-1 , 如果计数器大于等于0 就提到数据并操作. 然后v操作. 计数器+1
如果前面计数器小于0, 则退出或者挂起.
|
Google 的答案
信号量分记录型信号量和整数型信号量,记录型信号量可以为负值
整数型信号量不可能出现负数,因为当信号量的值变为0后就空等了,不能再减少了,因为有空等,所以效率低
还有一种是记录型信号量,当信号量的值为0的时候还会再减少,然后进程把自己挂在这个信号量的等待队列下,这种信号量可以为负数,而且负数的绝对值就是挂在该信号量下的进程个数。
void wait (semaphore S){
S.value--;
if(S.value
信号量分记录型信号量和整数型信号量,记录型信号量可以为负值
整数型信号量不可能出现负数,因为当信号量的值变为0后就空等了,不能再减少了,因为有空等,所以效率低
还有一种是记录型信号量,当信号量的值为0的时候还会再减少,然后进程把自己挂在这个信号量的等待队列下,这种信号量可以为负数,而且负数的绝对值就是挂在该信号量下的进程个数。
void wait (semaphore S){
S.value--;
if(S.value