pthread_cond_wait()如何工作?

问题描述:

所以pthread_cond_wait()的想法是,它会解锁互斥,等待条件。pthread_cond_wait()如何工作?

允许假设你将手动首先解锁互斥体,然后等待一个条件。在这段时间内,在这两个操作之间,你必须假定可能发生不好的事情,另一个线程会锁定互斥锁,这不好。如果你先等待然后解锁,那也是一样,这是不可能的。

所以,在这里我的问题是:
如何pthread_cond_wait()实际工作?

的线程调用的函数,并传递一个锁定的互斥和therafter的条件等待解决?

如何另一个线程然后修改变量,如果它已经被这个线程锁定?

我首先想到的是,互斥量必须是递归的,但是是递归只允许同一个线程对互斥体多次锁定。

+3

请在*原子操作一些研究*。解锁并将线程的状态更改为等待发生在一个原子操作中,可能在操作系统内核中。 –

不知道为什么我不只是谷歌规范的pthread_cond_wait()

我想我并没有完全明白我的问题会变成是,当我开始。

不管怎么说回答我的问题都可以在这里找到:http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_cond_wait.html