【问题标题】:Checking the value of pthread_cond_t检查 pthread_cond_t 的值
【发布时间】:2020-02-04 07:28:42
【问题描述】:

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

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

pthread_cond_t cv;

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

while(!node->cv) {

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

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

【问题讨论】:

    标签: c multithreading synchronization pthreads


    【解决方案1】:

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

    while (!node->cv)
    

    你会的:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多