pthread_cond_signa例子
时间: 2023-10-17 19:19:44 浏览: 76
pthreads使用例子
下面是一个简单的 `pthread_cond_signal` 的例子:
```c
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int done = 0;
void *thread_func(void *arg)
{
printf("Thread waiting...\n");
pthread_mutex_lock(&mutex);
while (!done) {
pthread_cond_wait(&cond, &mutex);
}
printf("Thread done!\n");
pthread_mutex_unlock(&mutex);
return NULL;
}
int main()
{
pthread_t thread;
pthread_create(&thread, NULL, thread_func, NULL);
sleep(1); // 确保线程已经开始等待
printf("Signaling thread...\n");
pthread_mutex_lock(&mutex);
done = 1;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
pthread_join(thread, NULL);
return 0;
}
```
这个例子创建了一个线程,线程会等待一个条件变量 `cond`,然后主线程会等待一秒钟,然后发出一个信号,告诉线程可以继续执行了。当线程收到信号后,会打印一条消息,然后结束。主线程等待线程结束后退出。
阅读全文