浅谈pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)
来源:互联网 发布:罗技在淘宝买怎么样 编辑:程序博客网 时间:2024/05/18 12:38
第一眼看到pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex) 还真有点头疼。
(1)、一般在式样该函数之前会加锁pthread_mutex_lock(&mutex) 然后在调用pthread_cond_wait。
(2)、pthread_cond_wait 函数做了一下一些事情:
1、pthread_mutex_unlock(&mutex),block阻塞自己,这个过程不消耗cpu,这个过程是一个原子操作。
2、当收到pthread_cond_signal(&cond)后,使自己苏醒,然后在pthread_mutex_lock(&mutex)锁住。
(3) 、问题:这个时候有些人会很苦恼:
1、pthread_cond_wait 前调用pthread_mutex_lock(&mutex)加锁,而他自己又把锁解了,那为什么加锁啊?
2、当收到信号后,自己已经苏醒了,为什么又pthread_mutex_lock(&mutex)锁上。
(4)、对于第一个问题,我是这样理解的,pthread_cond_wait 之前加锁,是因为,如果有多个线程同时pthread_cond_wait,那么就要有个先后,所以加锁。而在pthread_cond_wait后解锁,当然是希望有其他的线程,能获得这把锁然后发送信号使自己苏醒。
对于第二问题,就是一个恢复现场的问题了。
- 浅谈pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)
- linux 多线程 pthread_cond_wait(&cond,&mutex)理解
- pthread_mutex_t和pthread_cond_t
- 生产者,消费者,pthread_cond_t pthread_mutex_t
- pthread_cond_t须用pthread_mutex_t保护
- pthread_cond_t 和 pthread_mutex_t
- pthread_cond_t, pthread_cond_broadcast()与 pthread_mutex_t
- pthread_cond_t 与 pthread_mutex_t(转载)
- pthread_cond_t 与 pthread_mutex_t(转载)
- 线程同步 pthread_mutex_t pthread_cond_t sem_t
- mutex, cond; 竞争, 同步问题
- pthread_cond_wait与mutex、while
- pthread_cond_t和pthread_mutex_t的疑问?解决办法
- linux mutex lock: pthread_mutex_t mutex_lock
- mutex和cond为何需要配合使用
- pthread 条件变量(cond),sem,mutex
- c posix thread mutex cond rwlock
- 关于mutex与cond的用法
- 用awk解压多个文件
- Monkeyrunner API帮助文档
- MFC六大关键技术之(四)——永久保存(串行化)
- 用<a>标签下载文件
- Linux驱动调试手段:打印信息日志
- 浅谈pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)
- Dos命令行
- 如何实现把web项目的输出流重置,并将打印语句结果写到日志文件
- LZO压缩支持
- 经营你的iOS应用日志
- Oracle分组函数之ROLLUP魅力
- sql分组查询每组的最大值
- 高频头设置原理
- ArrayList 和 Vector 的区别,HashMap 和Hashtable的区别