据我了解,这pthread_cond_t
是一个信号对象,类似于 Windows 平台上的事件。
所以基本功能pthread_cond_t
应该是等待它并发出信号。界面应该如下:
int pthread_cond_wait(pthread_cond_t* cone);
int pthread_cond_singal(pthread_cond_t* cond);
但实际上,pthread_cond_wait
需要一个mutex*
与其功能没有直接关系的类型参数。所以你需要一个互斥锁,甚至只是想为线程之间的通信创建一个信号,它不会同时访问相同的数据。
那么为什么把界面设计成这样,最终又给用户增加了开销呢?
Edit1:
我知道互斥锁是用来保护条件数据的,但是如果设计没有互斥锁的接口,你也可以通过结合互斥锁和pthread_cond来实现你的目标。而且您也可以只使用pthread_cond
来通知它们之间没有共享数据的其他线程。
例如,您可以有一个生产者线程创建文件,完成后通知另一个消费者处理文件,没有数据需要互斥锁保护。