当前位置: 首页> 科技> 互联网 > linux高级学习12

linux高级学习12

时间:2025/8/6 8:53:21来源:https://blog.csdn.net/qq_65818377/article/details/142069337 浏览次数:4次

24.9.9学习目录

  • 一.条件变量

一.条件变量

通常条件变量和互斥锁同时使用;
条件变量是用来阻塞线程,其本身并不是锁,直到达到特定的要求;

(1)条件变量初始化

#include <pthread.h>
int pthread_cond_init(pthread_cond_t *cond,const pthread_condattr_t *attr);

attr:通常位默认值NULL
也可以使用静态初始化pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

(2)释放条件变量

#include <pthread.h>
int pthread_cond_destroy(pthread_cond_t * cond);

(3)等待条件

在使用条件变量时当遇到条件不满足时,会将共享区域上的锁解开,然后阻塞线程等待条件满足,然后重新上锁,这些操作都是调用条件等待函数时完成,并且是原子操作

#include <pthread.h>
//参数为条件变量指针,互斥锁
int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)//给与等待的期限
int pthread_cond_timewait(pthread_cond_t *cond,pthread_mutex_t *mutex,const struct *abstime);

(4)唤醒被条件变量阻塞的线程

#include <pthread.h>
//唤醒至少一个阻塞在条件变量上的线程
int pthread_cond_signal(pthread_cond_t *cond);//唤醒区别被阻塞的线程
int pthread_cond_broadcast(pthread_cond_t *cond);
关键字:linux高级学习12

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: