天天看點

linux C++ 多線程使用pthread_cond 條件變量

1. 背景

多線程中經常需要使用到鎖(pthread_mutex_t)來完成多個線程之間的互斥操作。

但是互斥鎖有一個明顯到缺點: 隻有兩種狀态,鎖定和非鎖定。

而條件變量則通過允許線程阻塞并等待另一個線程發送喚醒信号的方法彌補了互斥鎖的不足,它常和互斥鎖一起使用。

2. 條件變量涉及到的主要函數

2.1 pthread_cond_wait 線程阻塞在條件變量

   int pthread_cond_wait(pthread_cond_t *cv, pthread_mutex_t *mutex);

 2.2 pthread_cond_signal 線程被喚醒

更多函數可以看: http://blog.csdn.net/icechenbing/article/details/7662026

 3. 執行個體代碼

實作功能: 2個線程對count每次分别加1, 第三個線程等count大于10後一次加100.

3.1 加1線程函數

3.2 count滿足條件後, 單次加100函數

3.3 整體代碼

linux C++ 多線程使用pthread_cond 條件變量
linux C++ 多線程使用pthread_cond 條件變量

View Code

繼續閱讀