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

标签 c synchronization semaphore getvalue

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

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

最佳答案

看起来问题就在这里:

&sem>0

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

你尝试过吗

getValue(&sem) > 0

关于c - 为什么获取信号量的值和 wait() 会出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55429576/

相关文章:

iphone - 我在哪里可以找到有关 IOS 日历同步的好教程?

java - 抛出不可能的 NullPointerException

linux - 如何防止 Perl 脚本并行运行多次

java - 有界缓冲区,互斥体与空的顺序。哪一个先出现

c++ - 如何将 C/C++ 插件安装到 Netbeans (linux)

c - C 中的动态结构和指针

c - C 中等式前的预期表达式

c++ - 如何在 C/C++ 中以编程方式创建软链接(soft link)?

android - 我安装了Android Studio 3.1.2。我注意到以下错误

c - 为什么 sem_wait 在 mac OSX 上不等待信号量?