-pthread_cond_wait
时间: 2023-12-02 16:42:29 浏览: 38
`pthread_cond_wait`是一个线程同步函数,用于等待条件变量的信号。它的原型如下:
```c
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
```
该函数会阻塞当前线程,直到条件变量`cond`被其他线程发送信号。在等待期间,该函数会自动释放`mutex`锁,以允许其他线程访问共享资源。当条件变量被发送信号时,该函数会重新获取`mutex`锁,并返回0。
`pthread_cond_wait`函数需要与`pthread_mutex_lock`和`pthread_mutex_unlock`函数一起使用,以确保线程同步和避免竞争条件。
以下是一个使用`pthread_cond_wait`的示例:
```c
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int ready = 0;
void *thread_func(void *arg) {
// 等待条件变量的信号
pthread_mutex_lock(&mutex);
while (!ready) {
pthread_cond_wait(&cond, &mutex);
}
pthread_mutex_unlock(&mutex);
// 执行其他操作
// ...
return NULL;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
// 发送条件变量的信号
pthread_mutex_lock(&mutex);
ready = 1;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
pthread_join(tid, NULL);
return 0;
}
```