我正在阅读有关信号量的信息,here我发现您无法直接访问(递增/递减)信号量。
信号量是一个整数变量,只能通过两个操作wait()和signal()来访问。
我对这个主题有两个问题:
如果是结构,那么我的第二个问题是:
semaphore.some_value++
访问信号量。 如果它是我在wikipedia上找到的变量:
一个简单的信号量是一个普通的变量 那为什么我们不能像
semaphore1++
那样访问它?
我试图增加它并得到这个错误:
错误:增加错误的类型参数
为什么禁止用户使用,为什么我们必须使用这些功能来访问它? (虽然我同意,使用函数并不是一个坏习惯,但为什么?)
答案 0 :(得分:1)
信号量的功能不仅仅在于整数的递增和递减,还在于信号量用户之间的通信。通信方面是wait
和signal
函数封装的内容。特别是,在大多数操作系统上,它们将使用较低级别的内核功能,以便wait
不需要浪费CPU反复检查信号量的值。
您收到编译器错误的事实表明,在您的系统上,信号量是一个结构。但是,您无法通过直接访问结构成员来使用信号量,因为这不会影响底层内核对象。