yohoro 发表于 2009-11-11 15:58

先支持,稍后拜读!

dreamice 发表于 2009-11-11 16:08

回复 #10 godbach 的帖子

呵呵,总结一下,最近很多人老问这个问题。我觉得其实跟一下源代码,很多问题还是蛮简单的

T-Bagwell 发表于 2009-11-11 17:37

是啊
源代码都开放了,再去问就不对劲了
哈哈

xiaochangfu 发表于 2009-11-11 22:23

回复 #3 dreamice 的帖子

请教下LZ   
         sem->count--;
count有什么作用!!为什么加加..又为什么渐减!!



感觉是不是可以去掉!!!既然之前有个spinlock    那就只能有一个能进去,干嘛还用count控制

dreamice 发表于 2009-11-11 22:30

回复 #14 xiaochangfu 的帖子

count是信号量计数,当获得这个信号量以后,就要计数器减减,这样表示获取了这个信号量。而加加,则标识释放了这个信号量。你可以理解一下PV原语的操作

xiaochangfu 发表于 2009-11-12 09:54

回复 #15 dreamice 的帖子

pv就是信号量!!然后这个程序本身就是用了down,up的信号量操作,这个倒是明白..


down里面有用到spinlock机制,可是spinlock里面用到count,我倒不是不明白count的用意!我不明白为什么spinlock的临界区还要用到count这样产生的效果是什么!!不用的后果又是什么!!
呵呵!!

dreamice 发表于 2009-11-12 11:13

回复 #16 xiaochangfu 的帖子

count作为资源的标识,其本身就是一个临界资源,也存在并发访问的控制问题。

xiaochangfu 发表于 2009-11-12 14:10

回复 #17 dreamice 的帖子

明白了!count本身就是临界资源!本省就是pv操作的数字!


但是我以前做的那个spinlock测试,,感觉对spinlock还是一知半解!!
因为spin基于smp和抢占的up,也只能运用于内核态,好像对其测试,有点难!!

[ 本帖最后由 xiaochangfu 于 2009-11-12 14:16 编辑 ]

dreamice 发表于 2009-11-12 22:30

回复 #18 xiaochangfu 的帖子

也可以测试的,通过写内核线程来测试就是了

xiaochangfu 发表于 2009-11-12 23:09

回复 #19 dreamice 的帖子

LZ能不能写两个线程示范下!!呵呵!!学习了!
页: 1 [2] 3 4
查看完整版本: Linux驱动开发庖丁解牛之四——并发控制之信号量(1)