操作系统有好多个进程/任务,并且不停的切换。
如果一个进程读写了全局结构体变量,写了一半,这时切换另一个进程,也要读写这个变量,这时候就会有冲突。
临界区可以保证,前一个进程读写完了,才被调度,切换到另一个进程,没读写完之前,不允许调度,不允许别切换出去。保证一个读写的完整性。
比如2个任务都要执行 a=a+1,第一个任务读出来 a=1,写入a=2之前,切换到另一个任务,另一个任务读出来,a还是1,写入a=2后,切换到任务1,任务1又把a=2写入。最终结果,a=2。可实际上你想要的是 a=3
临界区能保证任务1,把 a 修改为2,任务2 把a修改3。