用pthread_cond_wait实现线程挂起。
pthread_cond_wait()函数用于线程挂起,直到某个条件变量被唤醒。具体步骤如下:
- 定义条件变量和互斥锁
pthread_cond_t cond;
pthread_mutex_t mutex;
- 初始化条件变量和互斥锁
pthread_cond_init(&cond, NULL);
pthread_mutex_init(&mutex, NULL);
- 创建线程
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
- 在线程函数中实现线程挂起
void *thread_func(void *arg) {
pthread_mutex_lock(&mutex);
// 在这里可以进行一些计算或者操作
// 如果满足某个条件,就可以唤醒等待该条件变量的线程
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
- 在主线程中等待条件变量被唤醒
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
// 当条件变量被唤醒后,执行相应的操作
pthread_mutex_unlock(&mutex);
- 最后,销毁条件变量和互斥锁
pthread_cond_destroy(&cond);
pthread_mutex_destroy(&mutex);
原文地址: http://www.cveoy.top/t/topic/bw0l 著作权归作者所有。请勿转载和采集!