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

继续看并发的课程文章。

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

可见性

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

有序性

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

原子性

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

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

(0)
geekgaogeekgao博主
上一篇 2020年11月22日
下一篇 2020年11月23日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部

Warning: error_log(/usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/#log/log-2719.txt): failed to open stream: No such file or directory in /usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/spider.class.php on line 2900