1. 并发和竞争
用现实情况说明一下,如下图:

如果ATM取钱或者Shopping刷卡是同时发生的,如果银行没做任何处理,则会出现如上情况。
但银行是如何防止这样的事情发生的呢?
很简单,在判断银行账户余额之前,只需冻结其账户,只能由一个人访问和操作,等这个人操作结束之后再由其他人操作。
在编程的时候,也同样会遇到这种事情:保护共享资源。其中的一个解决办法就是:加锁。
2. 临界区:访问和操作共享数据的代码段。非常重要:真正需要保护的是数据,而不是代码
并发的原因:抢占和重新调度
a. 中断
b. 软中断和tasklet
c. 内核抢占
d. 睡眠
e. SMP
3. 锁
机制: 把锁看成门锁, 临界区看成房间。 在指定的时间内,房间只能有一个线程, 某个线程进入房间后,它会锁住房门;完成对共享数据的操作后,走出房门,打开门 锁. 如果另外一个线程在房门上锁的时候来了,就必须等待房里的线程出来打开门锁,才能进入房间。
本文通过实例解释了并发和竞争条件的问题,并介绍了如何通过锁来保护共享资源的方法。此外,还详细阐述了临界区的概念及其重要性。
607

被折叠的 条评论
为什么被折叠?



