检查 pthread_cond_t 的值

标签 c multithreading synchronization pthreads

我正在尝试在 while 循环条件下检查类型为 pthread_cond_t 的变量的值。

变量在节点结构中定义,格式如下:

pthread_cond_t cv;

当我尝试使用 !=== NULL 检查 this 的值时,我收到无法完成的错误。这是我尝试检查时的样子:

while(!node->cv) {

其中 node 是指向包含 cv 的结构的指针。

我收到错误“一元感叹号的参数类型错误,因为我猜它不是 bool 值。有没有办法检查这个条件变量是否有值?

最佳答案

条件变量没有值。它们是您等待和发出信号的抽象对象,并且抽象地与 bool 结果表达式(谓词)相关联,这些表达式涉及程序中受关联互斥锁保护的其他变量。所以不是:

while (!node->cv)

你这样做:

while (some_predicate(node))
    pthread_cond_wait(&node->cv, &node->mtx);

这必须在互斥锁已经锁定的情况下完成。

关于检查 pthread_cond_t 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58262140/

相关文章:

c - 编写一个函数 int mystrlen(char *s) ,返回字符串中的字符数,而不使用 strlen func

Python ctypes & libspeex.dll/libspeex.so; #define、typedef 和结构的等价物是什么?

c# - 具体来说,在 Unity 中, "where"是否真的等待返回?

Java 为新连接重新打开 ServerSocket

MySQL程序同步2个表的模式

javascript - Typescript:如何在有限时间内捕获键盘事件

c - 从 C 中的同一个 void 指针中提取一个字符和各种短整数

c - C中打印出字符串中的单个字符

java - 由于守护线程,Jmeter 未完成

sharepoint-2010 - Sharepoint Workspace 2010 本地商店位置