c++ 调用pthread_cond_signal和更改条件变量的顺序

ckx4rj1h  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(97)

我知道应该在更改条件变量后调用pthread_cond_signal/pthread_cond_broadcast以指示条件更改,但如果它们都发生在锁定状态下,顺序是否重要?比如说,

  1. pthread_mutex_lock(&mutex);
  2. pthread_cond_signal(&cond);
    1.条件=真
  3. pthread_mutex_unlock(&mutex);
    等待者的唤醒必须发生在第4步之后(检索互斥体),因此等待者必须看到更新条件变量
qni6mghb

qni6mghb1#

我想你是对的。如果检查此条件的代码是以正确的方式编写的,那么这应该不是问题。
例如

pthread_mutex_lock(&lock);
while(!state)
{
    pthread_cond_wait(&cond, &lock);
}
pthread_mutex_unlock(&lock);

相关问题