日期:2014-05-16 浏览次数:20630 次
1.第一个问题:为什么要同步??????????
????如果这两件事情操作了共同的数据,就需要干完一件,接着干另一件。
2.第二个问题:读和写????????
????????? 数据是一整块不可分割的东西。在同步的概念里面,写数据和读数据是不同的。两个进程可以同时读取数据,但是两个进程不能同时写,或者一个读,一个写。
3.同步的粒度?:大还是小??????
???? 同步的粒度也是一个很重要的概念,如果粒度过大,则造成瓶颈,粒度过小则造成了系统的复杂性。这是一个权衡的目标。但是一开始就定义一个大粒度的同步机制,然后再逐步减小粒度是个不错的选择。实际上linux也是这么做的。
4.同步和同时执行????????
?????? 同步和同时执行是两种概念。再单核处理器上,同时执行是不可能的,但是还是会有同步的问题。
5.同步何时发生?
????????? 1.中断。
???????2.进程调度。
???????3.多CPU的同时执行。
6.一些建议
????? 1.锁的是数据而不是代码。
??????2.只有局部变量和只在一个进程中使用的变量不需要锁。
7.死锁。
????? 死锁产生的原因是两个进程在互相等待。下面的经验很有用,如果有N个锁,请以同样的顺序获取这些锁。
8.一个很好的练习。
????? 生产者,消费者模型。采用生产者“推”或者 消费者“拉”数据的方式,也许对同步就有了更深刻的认识。
??????