线程同步--条件变量

条件变量

  互斥锁用来同步线程对于共享数据的访问的,那么条件变量用来同步线程间共享数据的值。条件变量提供了一种线程间的通知机制:当某个

共享的数据达到某个值的时候,唤醒等待这个共享数据的线程。

  条件变量的相关函数有:

  int pthread_cond_init(pthread_cond_t* cond,const pthread_condattr_t* cond_attr),该函数用来初始化条件变量,并设置条件变量的相

关属性。

  pthread_cond_destory(pthead_cond_t* cond),用来销毁一个条件变量,释放其占有的内核资源,销毁一个正在等待的条件变量会放回ebusy

的错误。

  pthread_cond_broadcast()和pthread_cond_signal()用来唤醒所有等待该条件变量的线层和唤醒一个等待该条件变量的线程。没有用来通知

指定条件变量的接口。

  pthread_cond_wait()用于等待条件变量,第二个参数mutex是用于保护条件变量的互斥锁,确保pthead_cond_wait()的原子性。调用pthread

扫描二维码关注公众号,回复: 8004525 查看本文章

_cond_wait()之前必须要将mutex先进行加锁,确保在该函数调用期间pthead_cond_signal()和pthread_cond_broadcast()函数不会修改条件变量

的状态,也就保证了线程不会错过条件变量的任何状态。

  

猜你喜欢

转载自www.cnblogs.com/wangkaia/p/11949532.html