进程同步之条件变量

条件变量  #include<pthread.h>

特点:读写锁和互斥锁不是任何时候都能阻塞线程,只能保证一个线程访问共享资源。

概念:提供了阻塞线程的一种机制,相当于把不符合条件的线程阻塞在一定的代码区域。尤其记住的是条件变量不能实现线程同步,它不是不是锁,但是可以在线程不满足条件的时候阻塞线程,不让线程继续运行。满足条件时通知线程继续运行。它的最主要作用是阻塞线程,因此还必须使用条件变量+互斥量互斥锁保护一块共享数据。

重点: 条件变量阻塞线程之后会将自已经获取的mutex锁解锁

                条件变量解除阻塞的时候会自己去自动获得那个mutex锁

条件变量的类型:pthread_cond_t

条件变量的函数:

 1、创建一个条件变量:pthread_cond_t cond;

 2、初始化一个条件变量

    pthread_cond_init (pthread_cond_t *cond,const pthread_cond_t*restrict attr);

   //第一个参数是条件变量地址,第二个是条件变量属性默认为NULL

 3、销毁一个条件变量

       pthread_cond_destroy(pthread_cond_t *cond);

 4、阻塞等待一个条件变量

      pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t * mutex);

 5、销毁一个条件变量

      pthread_cond_destroy(pthread_cond_t *cond);

 6、限时等待一个条件变量

     pthread_cond_timedwait(pthread_cond_t * cond,//条件变量的地址

     pthread_mutex_t* mutex,//互斥量的地址

     const structtimespec *abstime);//绝对时间

 7、唤醒至少一个阻塞在条件变量上的线程

     pthread_cond_signal(pthread_cond_t*cond);      

 8、唤醒全部阻塞在条件变量上的线程

     pthread_cond_broadcast(pthread_cond_t *cond);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值