- 论坛徽章:
- 44
|
本帖最后由 windoze 于 2013-01-17 18:25 编辑
回复 21# iw1210
另外,考虑到cv的典型使用方式:
- pthread_mutex_lock(mtx)
- while( cond_is_not_satisfied(...) ) {
- pthread_cond_wait(cv, mtx);
- }
- actions_on_condition(...);
- pthread_mutex_unlock(mtx);
复制代码 如果把mutex放在cv里面,API就没法保证cond_is_not_satisfied和actions_on_condition()在mutex被lock的状态下安全执行。
如果要保证这一点,API就得设计成这样:
- pthread_cond_wait(cv, cond_check_callback, actions_on_condition_callback)
复制代码 其中cond_check_callback是用来检查条件的回调函数指针,actions_on_condition_callback是条件满足时要执行的函数指针。
API没有更简单,反而更复杂了。 |
|