multithreading - 线程是否在虚假唤醒时持有相应的互斥体?

标签 multithreading parallel-processing synchronization pthreads

让我们看一下下面的代码。 假设一个线程看到ready=false,因此等待条件变量*mv_cv*,从而释放互斥体*my_mutex*并使自身进入休眠状态。 一段时间后,某些东西会虚假地唤醒线程,而 ready 仍保留值 false。我的问题是: 线程现在是否通过在唤醒之前重新获取互斥锁来持有互斥锁 *my_mutex*?

pthread_mutex_lock(&my_mutex);

while ( !ready )
{
        pthread_cond_wait(&my_cv, &my_mutex);
}

//some operation goes here

pthread_mutex_unlock(&my_mutex);

最佳答案

是的。虚假唤醒是成功返回的一种,并且后置条件(重新获取互斥锁)将得到满足。

关于multithreading - 线程是否在虚假唤醒时持有相应的互斥体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638958/

相关文章:

ios - 从自定义串行队列同步主队列的调度任务

java - 不同的线程,访问相同的同步方法,返回意外结果

c++ - OpenMP 使用循环和数组缩减

java - 在同一个对象上同步两次

multithreading - 将自定义主体和身份与 WCF 服务一起使用时出现问题

c - 使用 OpenMP 可能会出现哪些问题?

haskell - 并行 Haskell 来找到一个巨大数字的除数

安卓 : How to upload data/sync to server automatically when mobile gets internet

java - 无法理解以下java代码中线程同步的行为

c++ - 用于创建线程并加入可变数量线程的循环