Condition类必须配合Mutex使用,why?
生活随笔
收集整理的這篇文章主要介紹了
Condition类必须配合Mutex使用,why?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文鏈接:http://blog.sina.com.cn/s/blog_967817f20101bsf0.html
參考鏈接:http://www.cnblogs.com/Dahaka/archive/2012/02/19/2358528.html
因為pthread_cond_wait函數(shù)包含了很多操作,在wait之前和之后必須要手動加鎖/解鎖mutex,保證同一時間只有一個人對條件變量cond進行使用。
wait函數(shù)開始和結(jié)束的地方有解鎖/加鎖mutex,下面貼出源碼:
android-2.2.2_r1\bionic\libc\bionic\pthread.c
1 int __pthread_cond_timedwait_relative(pthread_cond_t *cond, 2 pthread_mutex_t * mutex, 3 const struct timespec *reltime) 4 { 5 int status; 6 int oldvalue = cond->value; 7 int wait_op = COND_IS_SHARED(cond) ? FUTEX_WAIT : FUTEX_WAIT_PRIVATE; 8 9 pthread_mutex_unlock(mutex); 10 status = __futex_syscall4(&cond->value, wait_op, oldvalue, reltime); 11 pthread_mutex_lock(mutex); 12 13 if (status == (-ETIMEDOUT)) return ETIMEDOUT; 14 return 0; 15 }?
轉(zhuǎn)載于:https://www.cnblogs.com/luzhiyuan/p/4380793.html
總結(jié)
以上是生活随笔為你收集整理的Condition类必须配合Mutex使用,why?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P3193 [HNOI2008]GT考试
- 下一篇: 廖雪峰Java1-2程序基础-7布尔运算