当前位置: 技术问答>linux和unix
有没有人给点拨一下,线程同步的问题
来源: 互联网 发布时间:2016-10-15
本文导语: 本帖最后由 longzuo 于 2010-11-09 15:47:46 编辑 书上(UNIX环境高级编程)讲到线程同步的时候,讲了三种方法, 互斥量(pthread_mutex_t) 读写锁(pthread_rwlock_t) 条件变量(pthread_cond_t), 看起来倒也清晰明了,但据我所知...
互斥量(pthread_mutex_t)
读写锁(pthread_rwlock_t)
条件变量(pthread_cond_t),
看起来倒也清晰明了,但据我所知,自旋锁,信号量也是用来同步的,网上搜了搜,貌似后面两种都说是Linux内核的同步方法,后两个名词跟上面的三种同步方法有什么关系吗?linux内核同步和书上讲的线程同步有什么联系吗?
刚刚接触linux编程不久,很快就陷入概念的海洋中。。。 求点拨
|
mutex跟rwlock用来互斥,里面的区别应该很明了了。
cond,sem用来同步,自旋锁用于同核同步。
很多人把互斥跟同步混为一谈,语义上的差别其实还是很大的。
cond,sem用来同步,自旋锁用于同核同步。
很多人把互斥跟同步混为一谈,语义上的差别其实还是很大的。
|
互斥量(pthread_mutex_t)
读写锁(pthread_rwlock_t)
条件变量(pthread_cond_t)
这几个都差不多。主要就是细微的差别。
读写锁允许多个读。但是只允许一个写,有写锁,就不允许任何锁。
条件变量很简单,就是由条件出发动作。条件不满足的时候,挂起
读写锁(pthread_rwlock_t)
条件变量(pthread_cond_t)
这几个都差不多。主要就是细微的差别。
读写锁允许多个读。但是只允许一个写,有写锁,就不允许任何锁。
条件变量很简单,就是由条件出发动作。条件不满足的时候,挂起
|
不要过分沉迷于对概念的纠缠, 互斥跟同步本质而言并不区别, 同步的实现也是通过互斥完成的, 只是在
1. 象自旋锁那样主动轮询检查状态
2. 象信号量那样靠调度程序通知
方法上是选择不同而已。 不光是kernel, 应用程序中也是一样,互斥跟同步的实现要么是轮询检查, 要么是信号。
1. 象自旋锁那样主动轮询检查状态
2. 象信号量那样靠调度程序通知
方法上是选择不同而已。 不光是kernel, 应用程序中也是一样,互斥跟同步的实现要么是轮询检查, 要么是信号。