并发与竞争

来源:互联网 发布:to:day软件 编辑:程序博客网 时间:2024/04/30 19:05

1.      并发和竞争

         用现实情况说明一下,如下图:

               

        如果ATM取钱或者Shopping刷卡是同时发生的,如果银行没做任何处理,则会出现如上情况。

         但银行是如何防止这样的事情发生的呢?

        很简单,在判断银行账户余额之前,只需冻结其账户,只能由一个人访问和操作,等这个人操作结束之后再由其他人操作。

        在编程的时候,也同样会遇到这种事情:保护共享资源。其中的一个解决办法就是:加锁。

2.      临界区:访问和操作共享数据的代码段。非常重要:真正需要保护的是数据,而不是代码

         并发的原因:抢占和重新调度

          a. 中断

          b. 软中断和tasklet

          c. 内核抢占

          d. 睡眠

          e. SMP

3.      锁

        机制: 把锁看成门锁, 临界区看成房间。 在指定的时间内,房间只能有一个线程, 某个线程进入房间后,它会锁住房门;完成对共享数据的操作后,走出房门,打开门 锁. 如果另外一个线程在房门上锁的时候来了,就必须等待房里的线程出来打开门锁,才能进入房间。


原创粉丝点击