【并发编程】经典线程不安全问题(多线程操作同一个资源容易产生相互覆盖)

1、首先说一下,什么是高速缓存?

高速缓存(Cache)是计算机体系结构中的一种关键性技术,用于提高数据访问速度和系统性能。它在处理器和主内存之间充当了一个临时存储器层,用于暂存常用的数据和指令,以减少处理器对主内存的访问次数,从而提高数据访问速度。
高速缓存往内存更新的时机是不确定的,如果数据更新回内存,高速缓存中的数据一定会清除,下次再计算需要重新在内存拷贝一份到高速缓存计算。

2、典中典(多线程操作同一个资源容易产生相互覆盖)

两个线程t1,t2,各线程一共需要对i加10次,t1在高速缓存中了9次刷新回去,内存中a=9,线程切换,t2+了1次刷新回去,覆盖,此时a=1。t2又被选中执行,将a=1从内存读取到高速缓存中,t2+了剩下的9次,在高速缓存中,t2的a=10,还没来得及往内存刷新,切换线程,t1将内存中的a=1读取到,+了剩下的1次,此时在高速缓存中,t1的a=2,没来的及刷新回内存,切换线程,t2执行,将a=10刷新回内存,此时内存中a=10;t2线程结束,当等到t1线程执行,将a=2刷新回内存,此时内存中a由t2的a=10,被覆盖为t1的a=2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值