为什么获取信号量和 wait() 的值会出现问题

Why would there be a problem to get the value of a semaphore and wait()

为什么获取信号量的值并检查它,以便当信号量的值 > 0 时,我们调用 wait() 会出现问题? 即:为什么下面的代码会有问题?

if (getValue(&sem)>0){
    wait(&sem);
}

看起来问题出在这里:

&sem>0

您没有将指向信号量 (&sem) 的指针作为参数传递,而是传递了一个 int (&sem > 0)

你试过了吗

getValue(&sem) > 0

?