【每日阅读】2020年11月22日-并发编程的三大问题

真诚的希望您能留言与我交流,这会对我有非常大的帮助!

继续看并发的课程文章。

今天了解了并发三大问题都是如何出现的。

可见性

多核CPU执行程序时,多个线程在不同CPU核心上执行,每个核都有自己的缓存。当线程修改变量后,并不一定会及时将缓存拷贝回内存,也不一定每次都从内存读取新得变量值,所以会发生A线程修改1核的缓存变量,B线程在2核心上无法看到这个修改。

有序性

这个是因为cpu对指令的重排引入的,cpu重排指令是为了性能,但是因此给软件开发引入的坑却让软件开发者自己解决。

原子性

高级编程语言中的一句代码,感觉貌似是一个指令,但是在cpu执行时却需要好几个指令一起配合才能完成。例如count += 1;就由复制变量到寄存器、加一、复制回内存3个指令组成。在任何一个指令执行过后cpu都有可能切换到另一个线程,继而引发并发问题。

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2702

发表评论

登录后才能评论
GitHub
分享本页
返回顶部