Linux-条件变量


    条件变量通常用于线程间的同步,可以挂起线程,知道某些条件满足被唤醒。通常和互斥锁一同使用。

        

1. 条件变量定义

pthread_cond_t cond;

2. 条件变量初始化函数

int pthread_cond_init(pthread_cond_t *cond,const pthread_condattr_t *attr);

    或者可以通过 pthread_cond_t cond=PTHREAD_COND_INITIALIZER; 的方式直接初始化

3. 条件变量等待函数

int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);
int pthread_cond_timedwait(pthread_cond_t *cond,pthread_mutex_t *mutex,const struct timespec *abstime);
    pthread_cond_timedwait 可以设置一个时间 abstime,若是达到或超过 abstime 它会结束并返回 ETIME

   

    pthread_cond_wait 过程

        <1>释放持有的互斥锁 mutex

        <2>线程阻塞,等待唤醒

        <3>被唤醒时,尝试重新获取 互斥锁 mutex


4.条件变量通知函数

int pthread_cond_signal(pthread_cond_t *cond);

    pthread_cond_signal 只唤醒一个条件变量中组设的线程

int pthread_cond_broadcast(pthread_cond_t *cond);
    pthread_cond_broadcast 唤醒所有该条件变量阻塞的线程


5. 条件变量销毁函数

int pthread_cond_destroy(pthread_cond_t *cond);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值