pthread_cond_signal用法
时间: 2023-10-17 09:13:23 浏览: 117
使等待的条件为真-LINUX环境高级编程 第六章 线程管理
pthread_cond_signal是用于唤醒等待在条件变量上的线程的函数。它的语法如下:
```c
int pthread_cond_signal(pthread_cond_t *cond);
```
参数cond是指向条件变量的指针。
当调用pthread_cond_signal时,它会唤醒等待在条件变量上的一个线程,如果没有等待的线程,则不执行任何操作。
值得注意的是,pthread_cond_signal只会唤醒一个等待的线程,如果有多个线程在等待,则只会唤醒其中一个。如果需要唤醒所有等待的线程,可以使用pthread_cond_broadcast函数。
在使用pthread_cond_signal之前,需要先使用pthread_cond_wait等函数等待条件变量的发生。当条件变量发生时,可以调用pthread_cond_signal来唤醒等待的线程。
下面是一个简单的使用pthread_cond_signal的例子:
```c
#include <pthread.h>
#include <stdio.h>
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void* thread_func(void* arg)
{
printf("Thread waiting...\n");
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
printf("Thread woken up!\n");
pthread_mutex_unlock(&mutex);
}
int main()
{
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
sleep(1);
printf("Sending signal...\n");
pthread_cond_signal(&cond);
pthread_join(tid, NULL);
return 0;
}
```
在这个例子中,我们创建了一个线程thread_func,它会等待条件变量cond的发生。在主线程中,等待1秒后调用pthread_cond_signal来唤醒等待的线程。当线程被唤醒后,它会输出一条消息。
阅读全文