pthread_cond_wait()实际上如何工作?

时间:2017-10-17 13:54:44

标签: c multithreading parallel-processing pthreads

所以 pthread_cond_wait() 的想法是它会解锁互斥锁并等待条件。

让我们假设你先手动解锁互斥锁然后等待一个条件。在这个时间范围内,在这两个操作之间,你必须假设可能发生一些不好的事情,另一个线程将锁定互斥锁,这是不好的。如果您先等待然后解锁,也是如此,这是不可能的。

所以,这是我的问题:
pthread_cond_wait() 实际上如何运作?

线程调用该函数并传递一个锁定的互斥锁,并且等待条件结束?

如果另一个线程已被此线程锁定,那么另一个线程如何修改该变量?

我的第一个想法是,互斥锁必须是递归的,但是递归只允许同一个线程多次锁定互斥锁。

1 个答案:

答案 0 :(得分:0)

我不确定为什么我只是谷歌 pthread_cond_wait() 的规范。

我想当我开始时,我并不完全知道我的问题会是什么。

无论如何,我的问题的答案可以在这里找到:http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_cond_wait.html