有共享资源、合作关系的线程之间由于并发交替运行,可能导致运行结果不正常。
下面模拟火车票购票系统,有三个售票窗口同时售票
由于线程的并发执行,导致出现非法的剩余票数。
假设num=1,线程T0进入休眠状态,保护现场后系统调度线程T1,T1休眠调度T2,T2休眠后T0休眠时间到被唤醒并执行num--,T1休眠时间到被唤醒并执行num--,T2休眠时间到被唤醒并执行num--
加入互斥锁,一个线程在进入临界区时获得锁,其他线程无法进入临界区,在退出临界区时释放锁,其他进程便可以访问临界区。